(()=>{ if(window.__RIO_OPVOEDAPP_BUNDLE_LOADED__)return; window.__RIO_OPVOEDAPP_BUNDLE_LOADED__=true; const style=document.createElement('style'); style.setAttribute('data-rio-opvoedapp',''); style.textContent="\n@import url(\"https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;500;600;700;800&display=swap\");\n\n#rio-chat,\n#rio-chat * {\n box-sizing: border-box;\n}\n\n#rio-chat {\n --rio-paars: #352783;\n --rio-lichtpaars: #8476d6;\n --rio-oranje: #f28c00;\n --rio-tekst: #282439;\n\n width: 100vw;\n margin-left: calc(50% - 50vw);\n font-family: \"Open Sans\", Arial, sans-serif;\n}\n\n#rio-chat button,\n#rio-chat input,\n#rio-chat textarea {\n font-family: \"Open Sans\", Arial, sans-serif;\n}\n\n#rio-chat .rio-hero {\n position: relative;\n min-height: 790px;\n padding: 68px 20px 76px;\n overflow: hidden;\n background: #221959;\n color: #ffffff;\n}\n\n#rio-chat .rio-hero::before {\n content: \"\";\n position: absolute;\n inset: -15%;\n background:\n radial-gradient(\n ellipse at 12% 20%,\n #594ac2 0%,\n transparent 35%\n ),\n radial-gradient(\n ellipse at 87% 28%,\n rgba(242, 140, 0, 0.78) 0%,\n transparent 34%\n ),\n radial-gradient(\n ellipse at 47% 105%,\n #8476d6 0%,\n transparent 40%\n ),\n linear-gradient(\n 145deg,\n #1d1552 8%,\n #352783 56%,\n #251a55 100%\n );\n filter: blur(9px);\n transform: scale(1.05);\n}\n\n#rio-chat .rio-hero::after {\n content: \"\";\n position: absolute;\n inset: 0;\n background: linear-gradient(\n to bottom,\n rgba(16, 11, 48, 0.04),\n rgba(16, 11, 48, 0.42)\n );\n pointer-events: none;\n}\n\n#rio-chat .rio-inhoud {\n position: relative;\n z-index: 1;\n width: min(980px, 100%);\n margin: 0 auto;\n text-align: center;\n}\n\n#rio-chat .rio-merk {\n margin-bottom: 78px;\n color: #ffffff;\n font-size: 16px;\n font-weight: 800;\n letter-spacing: 0;\n}\n\n#rio-chat .rio-merk-accent {\n color: #ffb247;\n}\n\n#rio-chat .rio-bewijs {\n display: inline-flex;\n align-items: center;\n gap: 9px;\n padding: 7px 12px;\n border: 1px solid rgba(255, 255, 255, 0.18);\n border-radius: 999px;\n background: rgba(255, 255, 255, 0.1);\n backdrop-filter: blur(10px);\n color: #ffffff;\n font-size: 12px;\n}\n\n#rio-chat .rio-sterren {\n color: #ffb247;\n letter-spacing: 0;\n}\n\n#rio-chat .rio-titel {\n max-width: 820px;\n margin: 20px auto 15px;\n color: #ffffff;\n font-family: \"Open Sans\", Arial, sans-serif;\n font-size: clamp(39px, 5vw, 60px);\n font-weight: 800;\n line-height: 1.08;\n letter-spacing: 0;\n}\n\n#rio-chat .rio-intro {\n max-width: 690px;\n margin: 0 auto 28px;\n color: rgba(255, 255, 255, 0.83);\n font-size: 18px;\n line-height: 1.6;\n}\n\n#rio-chat .rio-assistent {\n width: min(800px, 100%);\n margin: 0 auto;\n overflow: hidden;\n border-radius: 23px;\n background: #ffffff;\n color: var(--rio-tekst);\n text-align: left;\n box-shadow: 0 28px 75px rgba(10, 5, 42, 0.34);\n}\n\n#rio-chat .rio-startvlak {\n position: relative;\n padding: 18px;\n}\n\n#rio-chat .rio-assistent.rio-actief .rio-startvlak {\n display: none;\n}\n\n#rio-chat .rio-hoofdinvoer {\n display: block;\n width: 100%;\n height: 54px;\n padding: 0 52px 0 2px;\n border: 0;\n outline: 0;\n resize: none;\n background: transparent;\n color: var(--rio-tekst);\n font-size: 16px;\n line-height: 1.55;\n}\n\n#rio-chat .rio-hoofdinvoer::placeholder {\n color: transparent;\n}\n\n#rio-chat .rio-invoerwrap {\n position: relative;\n}\n\n#rio-chat .rio-typewriter {\n position: absolute;\n top: 0;\n right: 52px;\n left: 2px;\n color: #8b8791;\n font-size: 16px;\n line-height: 1.55;\n pointer-events: none;\n}\n\n#rio-chat .rio-cursor {\n display: inline-block;\n width: 2px;\n height: 19px;\n margin-left: 2px;\n vertical-align: -4px;\n background: var(--rio-paars);\n animation: rio-knipperen 0.8s infinite;\n}\n\n#rio-chat .rio-starttekst {\n display: block;\n margin: 0 56px 8px 2px;\n color: #98939f;\n font-size: 11px;\n}\n\n#rio-chat .rio-starttekst.rio-starttekst-fout {\n color: #a46100;\n font-weight: 700;\n}\n\n#rio-chat .rio-meettoestemming {\n display: flex;\n gap: 8px;\n align-items: flex-start;\n margin: 10px 56px 0 2px;\n color: #625d70;\n font-size: 11px;\n line-height: 1.4;\n}\n\n#rio-chat .rio-meettoestemming input {\n flex: 0 0 auto;\n width: 16px;\n height: 16px;\n margin: 1px 0 0;\n accent-color: var(--rio-paars);\n}\n\n#rio-chat .rio-ai-uitleg {\n width: min(800px, 100%);\n margin: 0 auto 10px;\n color: rgba(255, 255, 255, 0.88);\n font-size: 13px;\n font-weight: 700;\n text-align: left;\n}\n\n#rio-chat .rio-privacylinks {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n margin: 8px 56px 0 26px;\n font-size: 11px;\n}\n\n#rio-chat .rio-privacylinks a,\n#rio-chat .rio-privacylinks summary {\n color: var(--rio-paars);\n cursor: pointer;\n font-weight: 700;\n}\n\n#rio-chat .rio-privacypaneel {\n margin-top: 10px;\n padding: 12px;\n border: 1px solid #e3def4;\n background: #f8f6ff;\n}\n\n#rio-chat .rio-privacypaneel p { margin: 8px 0 0; }\n\n#rio-chat .rio-versturen {\n display: grid;\n place-items: center;\n border: 0;\n background: var(--rio-paars);\n color: #ffffff;\n cursor: pointer;\n transition:\n background 0.2s ease,\n transform 0.2s ease;\n}\n\n#rio-chat .rio-versturen:hover {\n background: #49399a;\n transform: translateY(-1px);\n}\n\n#rio-chat .rio-startknop {\n position: absolute;\n right: 0;\n top: 5px;\n width: 43px;\n height: 43px;\n border-radius: 13px;\n}\n\n#rio-chat .rio-versturen svg {\n width: 18px;\n height: 18px;\n}\n\n#rio-chat .rio-chatvenster {\n display: none;\n}\n\n#rio-chat .rio-assistent.rio-actief .rio-chatvenster {\n display: flex;\n flex-direction: column;\n max-height: min(680px, calc(100svh - 150px));\n}\n\n#rio-chat .rio-chatkop {\n display: flex;\n align-items: center;\n gap: 11px;\n padding: 14px 17px;\n border-bottom: 1px solid #ede9f3;\n}\n\n#rio-chat .rio-avatar {\n display: grid;\n place-items: center;\n width: 35px;\n height: 35px;\n flex: 0 0 auto;\n border-radius: 11px;\n background: var(--rio-paars);\n color: #ffffff;\n font-size: 13px;\n font-weight: 800;\n}\n\n#rio-chat .rio-agentnaam {\n display: block;\n color: var(--rio-paars);\n font-size: 13px;\n font-weight: 800;\n}\n\n#rio-chat .rio-status {\n display: block;\n color: #8c8795;\n font-size: 11px;\n}\n\n#rio-chat .rio-opnieuw {\n margin-left: auto;\n padding: 7px 10px;\n border: 0;\n border-radius: 9px;\n background: #f1eefb;\n color: var(--rio-paars);\n font-size: 11px;\n font-weight: 700;\n cursor: pointer;\n}\n\n#rio-chat .rio-berichten {\n flex: 1 1 auto;\n min-height: 0;\n max-height: 330px;\n padding: 17px 18px 5px;\n overflow-y: auto;\n overscroll-behavior: contain;\n scroll-behavior: smooth;\n -webkit-overflow-scrolling: touch;\n}\n\n#rio-chat .rio-bericht {\n display: flex;\n margin-bottom: 11px;\n animation: rio-verschijnen 0.25s ease;\n}\n\n#rio-chat .rio-bericht-gebruiker {\n justify-content: flex-end;\n}\n\n#rio-chat .rio-bubbel {\n max-width: 81%;\n padding: 11px 14px;\n border-radius: 16px;\n background: #f0edfb;\n color: var(--rio-tekst);\n font-size: 13px;\n line-height: 1.5;\n}\n\n#rio-chat .rio-bericht-bot .rio-bubbel {\n border-bottom-left-radius: 4px;\n}\n\n#rio-chat .rio-bericht-gebruiker .rio-bubbel {\n border-bottom-right-radius: 4px;\n background: var(--rio-paars);\n color: #ffffff;\n}\n\n#rio-chat .rio-bubbel strong {\n color: var(--rio-paars);\n}\n\n#rio-chat .rio-typindicator {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n width: auto;\n min-width: 126px;\n}\n\n#rio-chat .rio-typindicator span {\n margin-right: 2px;\n}\n\n#rio-chat .rio-typindicator i {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: #998fc8;\n animation: rio-puls 1s infinite;\n}\n\n#rio-chat .rio-chatonderkant {\n flex: 0 0 auto;\n padding: 5px 13px 13px;\n border-top: 1px solid #f0edf7;\n background: #ffffff;\n}\n\n#rio-chat .rio-composer {\n display: flex;\n align-items: center;\n gap: 7px;\n padding: 5px 5px 5px 12px;\n border: 1px solid #ddd7e7;\n border-radius: 14px;\n}\n#rio-chat .rio-voortgang {\n margin: 0 0 8px;\n color: #62558a;\n font-size: 13px;\n font-weight: 700;\n line-height: 1.3;\n text-align: left;\n}\n#rio-chat .rio-voortgang[hidden] { display: none !important; }\n\n#rio-chat .rio-composer input {\n flex: 1;\n min-width: 0;\n padding: 0;\n border: 0;\n outline: 0;\n background: transparent;\n color: var(--rio-tekst);\n font-size: 16px;\n pointer-events: auto;\n touch-action: manipulation;\n -webkit-user-select: text;\n user-select: text;\n}\n\n#rio-chat .rio-chatknop {\n width: 36px;\n height: 36px;\n flex: 0 0 auto;\n border-radius: 10px;\n}\n\n#rio-chat .rio-antwoorden {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\n}\n\n#rio-chat .rio-antwoordknop {\n padding: 7px 10px;\n border: 1px solid #d8d1eb;\n border-radius: 999px;\n background: #ffffff;\n color: var(--rio-paars);\n font-size: 11px;\n font-weight: 700;\n cursor: pointer;\n}\n\n#rio-chat .rio-antwoordknop:hover {\n background: #f1eefb;\n}\n\n#rio-chat .rio-resultaat {\n margin-top: 10px;\n padding: 14px;\n border: 1px solid #dcd5ec;\n border-radius: 14px;\n background: #ffffff;\n}\n\n#rio-chat .rio-resultaat h3 {\n margin: 0 0 5px;\n color: var(--rio-paars);\n font-size: 16px;\n}\n\n#rio-chat .rio-resultaat p {\n margin: 0;\n}\n\n#rio-chat .rio-resultaat a {\n display: block;\n margin-top: 10px;\n padding: 10px;\n border-radius: 10px;\n background: var(--rio-oranje);\n color: #ffffff;\n text-align: center;\n text-decoration: none;\n font-weight: 800;\n}\n\n#rio-chat .rio-route-loader {\n min-width: min(430px, 100%);\n padding: 16px 18px 18px;\n}\n\n#rio-chat .rio-route-loader strong {\n display: block;\n margin-bottom: 6px;\n color: var(--rio-paars-donker);\n font-size: 15px;\n font-weight: 800;\n}\n\n#rio-chat .rio-route-loader span {\n display: block;\n margin-bottom: 12px;\n color: #6b647a;\n font-size: 13px;\n line-height: 1.45;\n}\n\n#rio-chat .rio-routebar {\n height: 8px;\n overflow: hidden;\n border-radius: 999px;\n background: #eeeaff;\n}\n\n#rio-chat .rio-routebar i {\n display: block;\n width: 42%;\n height: 100%;\n border-radius: 999px;\n background: linear-gradient(90deg, var(--rio-oranje), #ffbf69);\n animation: rio-route-laden 1.1s ease-in-out infinite;\n}\n\n#rio-chat .rio-keuzelabel {\n margin: 16px 0 10px;\n color: rgba(255, 255, 255, 0.66);\n font-size: 12px;\n}\n\n@keyframes rio-knipperen {\n 50% {\n opacity: 0;\n }\n}\n\n@keyframes rio-verschijnen {\n from {\n opacity: 0;\n transform: translateY(5px);\n }\n\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes rio-puls {\n 0%,\n 70%,\n 100% {\n opacity: 0.3;\n }\n\n 35% {\n opacity: 1;\n transform: translateY(-2px);\n }\n}\n\n@keyframes rio-route-laden {\n 0% {\n transform: translateX(-115%);\n }\n\n 50% {\n transform: translateX(70%);\n }\n\n 100% {\n transform: translateX(245%);\n }\n}\n\n@media (max-width: 800px) {\n #rio-chat .rio-hero {\n min-height: 720px;\n padding: 38px 14px 62px;\n }\n\n #rio-chat .rio-merk {\n margin-bottom: 50px;\n }\n\n #rio-chat .rio-titel {\n font-size: 36px;\n }\n\n #rio-chat .rio-intro {\n font-size: 16px;\n }\n}\n\n@media (max-width: 500px) {\n #rio-chat .rio-hero {\n min-height: 760px;\n }\n\n #rio-chat .rio-merk {\n margin-bottom: 54px;\n font-size: 13px;\n }\n\n #rio-chat .rio-bewijs {\n gap: 6px;\n font-size: 11px;\n }\n\n #rio-chat .rio-titel {\n font-size: 32px;\n }\n\n #rio-chat .rio-intro {\n font-size: 15px;\n }\n\n #rio-chat .rio-typewriter,\n #rio-chat .rio-hoofdinvoer {\n font-size: 14px;\n }\n\n #rio-chat .rio-bubbel {\n max-width: 91%;\n }\n\n #rio-chat .rio-berichten {\n max-height: 360px;\n }\n}\n\n/* Premium persoonlijke route */\n#rio-chat {\n --rio-paars-donker:#352783;\n --rio-paars-nacht:#251765;\n --rio-paars:#8476d6;\n --rio-lichtpaars:#cec6f8;\n --rio-oranje:#f28c00;\n --rio-lavendel:#faf8ff;\n --rio-tekst:#342d45;\n --rio-subtekst:#665d76;\n --rio-border:#e6e0f4;\n}\n#rio-chat.rio-toont-route .rio-inhoud {width:min(1280px,100%);}\n#rio-chat.rio-toont-route .rio-assistent {width:100%;}\n#rio-chat.rio-toont-route .rio-berichten {max-height:none;height:auto;overflow:visible;min-height:0;padding:20px;scroll-behavior:auto;}\n#rio-chat.rio-toont-route .rio-berichten > .rio-bericht {display:none;}\n#rio-chat.rio-toont-route .rio-resultaat {margin:0;scroll-margin-top:24px;}\n#rio-chat .rio-resultaat {\n position:relative;\n overflow:hidden;\n padding:0;\n border:1px solid var(--rio-border);\n border-radius:28px;\n background:\n radial-gradient(circle at 18% 16%, rgba(206,198,248,.38), transparent 30%),\n linear-gradient(180deg,#fff 0%,var(--rio-lavendel) 32%,#fff 100%);\n box-shadow:0 24px 60px rgba(53,39,131,.11);\n}\n#rio-chat .rio-routehero {\n position:relative;\n display:grid;\n grid-template-columns:minmax(0,1fr) auto;\n gap:24px;\n align-items:center;\n min-height:190px;\n padding:34px 38px;\n background:\n linear-gradient(135deg,rgba(37,23,101,.98),rgba(75,51,146,.98)),\n var(--rio-paars-donker);\n color:#fff;\n}\n#rio-chat .rio-routehero::after {\n content:\"\";\n position:absolute;\n left:calc(50% - 1px);\n bottom:-44px;\n width:2px;\n height:58px;\n background:linear-gradient(180deg,rgba(242,140,0,.85),rgba(206,198,248,0));\n}\n#rio-chat .rio-routehero-tekst {position:relative;z-index:1;max-width:620px;}\n#rio-chat .rio-routehero .rio-routeeyebrow,\n#rio-chat .rio-routetype,\n#rio-chat .rio-routemeta,\n#rio-chat .rio-herinneringtijd {\n letter-spacing:0;\n text-transform:uppercase;\n}\n#rio-chat .rio-routehero .rio-routeeyebrow {font-size:12px;font-weight:800;color:#e8e0ff;margin:0 0 10px;}\n#rio-chat .rio-routehero h3 {color:#fff;font-size:36px;line-height:1.15;margin:0 0 12px;}\n#rio-chat .rio-routehero p {color:#f2efff;font-size:16px;line-height:1.65;margin:0;}\n#rio-chat .rio-hero-start {\n position:relative;\n z-index:1;\n width:118px;\n height:118px;\n border-radius:50%;\n display:flex;\n align-items:center;\n justify-content:center;\n color:#fff;\n font-size:25px;\n font-weight:800;\n background:rgba(255,255,255,.08);\n border:1px solid rgba(255,255,255,.22);\n}\n#rio-chat .rio-hero-start::before,\n#rio-chat .rio-hero-start::after {\n content:\"\";\n position:absolute;\n border-radius:50%;\n}\n#rio-chat .rio-hero-start::before {inset:14px;background:var(--rio-oranje);box-shadow:0 16px 35px rgba(242,140,0,.28);}\n#rio-chat .rio-hero-start::after {inset:2px;border:1px solid rgba(255,255,255,.32);}\n#rio-chat .rio-hero-start span {position:relative;z-index:1;}\n#rio-chat .rio-roadmap {\n position:relative;\n padding:36px 34px 28px;\n isolation:isolate;\n}\n#rio-chat .rio-routecontext {\n margin:26px 34px 0;\n padding:24px 26px;\n border:1px solid var(--rio-border);\n border-radius:24px;\n background:rgba(255,255,255,.88);\n box-shadow:0 12px 30px rgba(53,39,131,.06);\n}\n#rio-chat .rio-routecontext .rio-routeeyebrow {margin:0 0 8px;color:#7562c9;font-size:11px;font-weight:800;}\n#rio-chat .rio-routecontext h4 {margin:0 0 10px;color:var(--rio-paars-donker);font-size:22px;font-weight:800;line-height:1.25;}\n#rio-chat .rio-routecontext p {margin:0;color:var(--rio-tekst);font-size:15px;line-height:1.7;}\n#rio-chat .rio-routecurve {\n position:absolute;\n inset:16px 0 auto;\n width:100%;\n height:calc(100% - 32px);\n pointer-events:none;\n z-index:0;\n}\n#rio-chat .rio-routecurve path {\n fill:none;\n stroke-width:7;\n stroke-linecap:round;\n stroke-dasharray:1500;\n stroke-dashoffset:1500;\n filter:drop-shadow(0 10px 16px rgba(53,39,131,.1));\n}\n#rio-chat .rio-routepad {\n position:relative;\n z-index:1;\n display:grid;\n grid-template-columns:minmax(0,1fr) 88px minmax(0,1fr);\n gap:48px 26px;\n list-style:none;\n margin:0;\n padding:0;\n}\n#rio-chat .rio-routestap {\n position:relative;\n width:100%;\n max-width:none;\n padding-top:72px;\n opacity:0;\n}\n#rio-chat .rio-routestap-1 {\n grid-column:1 / -1;\n justify-self:center;\n width:min(700px,100%);\n padding-top:88px;\n}\n#rio-chat .rio-routestap-2 {grid-column:1 / 2;justify-self:end;}\n#rio-chat .rio-routestap-3 {grid-column:3 / 4;justify-self:start;}\n#rio-chat .rio-routestap-4 {\n grid-column:1 / -1;\n justify-self:center;\n width:min(560px,100%);\n}\n#rio-chat .rio-routestap-2::after,\n#rio-chat .rio-routestap-3::after {\n content:\"\";\n position:absolute;\n top:37px;\n width:44px;\n height:2px;\n background:linear-gradient(90deg,rgba(132,118,214,.2),rgba(132,118,214,.72));\n}\n#rio-chat .rio-routestap-2::after {right:-18px;}\n#rio-chat .rio-routestap-3::after {left:-18px;transform:scaleX(-1);}\n#rio-chat .rio-routenummer {\n position:absolute;\n top:0;\n left:50%;\n width:62px;\n height:62px;\n transform:translateX(-50%);\n border-radius:50%;\n display:flex;\n align-items:center;\n justify-content:center;\n background:var(--rio-paars-donker);\n color:#fff;\n box-shadow:0 0 0 9px rgba(250,248,255,.9),0 12px 28px rgba(53,39,131,.22);\n font-size:18px;\n font-weight:800;\n transition:transform .22s ease, box-shadow .22s ease;\n}\n#rio-chat .rio-routestap-2 .rio-routenummer {left:auto;right:-32px;transform:none;}\n#rio-chat .rio-routestap-3 .rio-routenummer {left:-32px;transform:none;}\n#rio-chat .rio-actieve-stap .rio-routenummer {\n width:78px;\n height:78px;\n background:var(--rio-oranje);\n color:#fff;\n box-shadow:0 0 0 11px #fff1dd,0 18px 42px rgba(242,140,0,.26);\n font-size:21px;\n}\n#rio-chat .rio-routestap:hover .rio-routenummer {transform:translateX(-50%) scale(1.03);}\n#rio-chat .rio-routestap-2:hover .rio-routenummer,\n#rio-chat .rio-routestap-3:hover .rio-routenummer {transform:scale(1.03);}\n#rio-chat .rio-stepcontent {position:relative;}\n#rio-chat .rio-resultaat .rio-routekop {\n margin:0 0 6px;\n color:var(--rio-paars-donker);\n font-size:19px;\n font-weight:800;\n line-height:1.25;\n}\n#rio-chat .rio-routestap-1 .rio-routekop {font-size:22px;}\n#rio-chat .rio-resultaat .rio-routeuitleg {\n margin:0 0 16px;\n color:var(--rio-subtekst);\n font-size:14px;\n line-height:1.6;\n}\n#rio-chat .rio-routekaart {\n margin-top:12px;\n border:1px solid var(--rio-border);\n border-radius:22px;\n background:rgba(255,255,255,.96);\n box-shadow:0 12px 30px rgba(53,39,131,.07);\n overflow:hidden;\n transition:transform .22s ease,box-shadow .22s ease,border-color .22s ease;\n}\n#rio-chat .rio-routekaart:hover {\n transform:translateY(-3px);\n border-color:rgba(132,118,214,.62);\n box-shadow:0 18px 42px rgba(53,39,131,.12);\n}\n#rio-chat .rio-actieve-stap .rio-routekaart {\n border-color:rgba(242,140,0,.55);\n box-shadow:0 20px 48px rgba(242,140,0,.14),0 16px 36px rgba(53,39,131,.09);\n}\n#rio-chat .rio-routekaart summary {\n position:relative;\n display:grid;\n grid-template-columns:44px minmax(0,1fr) auto 36px;\n gap:14px;\n align-items:center;\n min-height:86px;\n list-style:none;\n cursor:pointer;\n padding:20px;\n color:var(--rio-paars-donker);\n}\n#rio-chat .rio-actieve-stap .rio-routekaart summary {min-height:110px;padding:26px 24px;background:linear-gradient(120deg,#fffaf2,#fff);}\n#rio-chat .rio-routekaart summary::-webkit-details-marker {display:none;}\n#rio-chat .rio-routekaart summary:focus-visible {outline:3px solid rgba(132,118,214,.55);outline-offset:-4px;}\n#rio-chat .rio-routekaart summary::after {\n content:\"+\";\n width:34px;\n height:34px;\n border-radius:50%;\n display:flex;\n align-items:center;\n justify-content:center;\n background:#f2efff;\n color:var(--rio-paars-donker);\n font-size:24px;\n font-weight:400;\n line-height:1;\n transition:transform .22s ease,background .22s ease,color .22s ease;\n}\n#rio-chat .rio-routekaart[open] summary {border-bottom:1px solid #eee8f6;}\n#rio-chat .rio-routekaart[open] summary::after {transform:rotate(45deg);background:#fff2dc;color:var(--rio-oranje);}\n#rio-chat .rio-routeicoon {\n width:44px;\n height:44px;\n border-radius:14px;\n display:flex;\n align-items:center;\n justify-content:center;\n background:#f2efff;\n color:var(--rio-paars-donker);\n}\n#rio-chat .rio-routeicoon svg {width:22px;height:22px;stroke:currentColor;stroke-width:1.9;fill:none;}\n#rio-chat .rio-actieve-stap .rio-routeicoon {background:#fff0d8;color:#9a5a00;}\n#rio-chat .rio-routesamenvatting {display:flex;flex-direction:column;gap:5px;min-width:0;}\n#rio-chat .rio-routetype {\n color:#6f5bbe;\n font-size:11px;\n font-weight:800;\n line-height:1.25;\n}\n#rio-chat .rio-actieve-stap .rio-routetype {color:#a46100;}\n#rio-chat .rio-routetitel {\n display:block;\n color:var(--rio-paars-donker);\n font-size:18px;\n font-weight:800;\n line-height:1.28;\n overflow-wrap:anywhere;\n}\n#rio-chat .rio-actieve-stap .rio-routetitel {font-size:22px;}\n#rio-chat .rio-routemeta {color:#817797;font-size:11px;font-weight:700;line-height:1.35;}\n#rio-chat .rio-routecta {\n display:inline-flex;\n align-items:center;\n gap:5px;\n color:var(--rio-oranje);\n font-size:13px;\n font-weight:800;\n white-space:nowrap;\n}\n#rio-chat .rio-routecta::after {content:\"→\";transition:transform .22s ease;}\n#rio-chat .rio-routekaart:hover .rio-routecta::after {transform:translateX(3px);}\n#rio-chat .rio-routeinhoud {\n padding:0 24px 22px 78px;\n color:var(--rio-tekst);\n font-size:15px;\n line-height:1.7;\n}\n#rio-chat .rio-actieve-stap .rio-routeinhoud {padding-bottom:26px;font-size:16px;}\n#rio-chat .rio-routeinhoud p {margin:0 0 13px;color:var(--rio-tekst);}\n#rio-chat .rio-resultaat .rio-routeactie {\n margin-top:14px;\n padding:14px 16px;\n border-left:4px solid var(--rio-oranje);\n border-radius:0 14px 14px 0;\n background:#fff7eb;\n color:#493013;\n line-height:1.65;\n}\n#rio-chat .rio-routebelofte,\n#rio-chat .rio-routeweek {\n margin-top:12px;\n padding:13px 14px;\n border-radius:15px;\n background:#f8f5ff;\n color:var(--rio-tekst);\n}\n#rio-chat .rio-routebelofte strong,\n#rio-chat .rio-routeweek strong {display:block;margin-bottom:4px;color:var(--rio-paars-donker);font-size:12px;text-transform:uppercase;letter-spacing:0;font-weight:800;}\n#rio-chat .rio-routeweek {background:#fff7eb;}\n#rio-chat .rio-routectatekst {color:var(--rio-oranje);font-weight:800;}\n#rio-chat .rio-routeinhoud ul {margin:12px 0 0;padding-left:20px;}\n#rio-chat .rio-routeinhoud li {margin-bottom:7px;}\n#rio-chat .rio-routeinhoud li::marker {color:var(--rio-paars);}\n#rio-chat .rio-routeextra {\n position:relative;\n display:grid;\n grid-template-columns:minmax(0,.9fr) minmax(280px,1.1fr);\n gap:24px;\n align-items:start;\n margin:14px 34px 0;\n padding:24px;\n border:1px solid var(--rio-border);\n border-radius:24px;\n background:linear-gradient(135deg,#fff,#f6f2ff);\n}\n#rio-chat .rio-routeextra .rio-routekaart {margin-top:0;box-shadow:0 10px 28px rgba(53,39,131,.06);}\n#rio-chat .rio-routeextra .rio-routeinhoud {padding-left:78px;}\n#rio-chat .rio-routeplanning {\n display:grid;\n grid-template-columns:minmax(0,1fr) minmax(0,1.12fr);\n gap:22px;\n padding:24px 34px 34px;\n}\n#rio-chat .rio-routeblok {\n padding:24px;\n border:1px solid var(--rio-border);\n border-radius:24px;\n background:#fff;\n box-shadow:0 12px 28px rgba(53,39,131,.055);\n}\n#rio-chat .rio-routeblok h4 {margin:0 0 13px;color:var(--rio-paars-donker);font-size:19px;font-weight:800;}\n#rio-chat .rio-routeblok ul {margin:0;padding-left:20px;color:var(--rio-tekst);font-size:15px;line-height:1.7;}\n#rio-chat .rio-routeblok li {margin-bottom:8px;}\n#rio-chat .rio-herinnering {\n margin:0 0 10px;\n padding:13px 14px;\n border-radius:16px;\n background:#f8f5ff;\n color:var(--rio-tekst);\n font-size:14px;\n line-height:1.55;\n}\n#rio-chat .rio-herinnering:last-child {margin-bottom:0;}\n#rio-chat .rio-herinneringtijd {display:block;margin-bottom:5px;color:#7562c9;font-size:11px;font-weight:800;}\n#rio-chat .rio-roadmap-in .rio-routecurve path {animation:rioRouteDraw 1.25s ease forwards;}\n#rio-chat .rio-roadmap-in .rio-routestap {animation:rioStepIn .55s ease forwards;}\n#rio-chat .rio-roadmap-in .rio-routestap-1 {animation-delay:.1s;}\n#rio-chat .rio-roadmap-in .rio-routestap-2 {animation-delay:.28s;}\n#rio-chat .rio-roadmap-in .rio-routestap-3 {animation-delay:.46s;}\n#rio-chat .rio-roadmap-in .rio-routestap-4 {animation-delay:.64s;}\n#rio-chat .rio-roadmap-in .rio-actieve-stap .rio-routenummer {animation:rioActivePulse 2.8s ease-in-out .7s infinite;}\n@keyframes rioRouteDraw {to {stroke-dashoffset:0;}}\n@keyframes rioStepIn {\n from {opacity:0;transform:translateY(18px);}\n to {opacity:1;transform:translateY(0);}\n}\n@keyframes rioActivePulse {\n 0%,100% {box-shadow:0 0 0 11px #fff1dd,0 18px 42px rgba(242,140,0,.26);}\n 50% {box-shadow:0 0 0 15px rgba(255,241,221,.72),0 22px 48px rgba(242,140,0,.32);}\n}\n@media(max-width:1100px) and (min-width:768px){\n #rio-chat.rio-toont-route .rio-inhoud {width:min(1060px,100%);}\n #rio-chat .rio-routehero {padding:30px;}\n #rio-chat .rio-roadmap {padding:32px 26px 22px;}\n #rio-chat .rio-routecurve {height:calc(100% - 32px);}\n #rio-chat .rio-routepad {grid-template-columns:minmax(0,1fr) 68px minmax(0,1fr);gap:42px 20px;}\n #rio-chat .rio-routestap {width:100%;max-width:none;}\n #rio-chat .rio-routestap-1 {width:min(620px,100%);margin-left:0;}\n #rio-chat .rio-routestap-4 {width:min(500px,100%);margin-left:0;}\n #rio-chat .rio-routekaart summary {grid-template-columns:40px minmax(0,1fr) 34px;gap:12px;padding:18px;}\n #rio-chat .rio-routecta {display:none;}\n #rio-chat .rio-routeicoon {width:40px;height:40px;}\n}\n@media(max-width:767px){\n #rio-chat.rio-toont-route .rio-berichten {padding:10px;}\n #rio-chat .rio-resultaat {border-radius:24px;}\n #rio-chat .rio-routehero {grid-template-columns:1fr;min-height:0;padding:26px 20px 28px;}\n #rio-chat .rio-routehero::after {display:none;}\n #rio-chat .rio-routehero h3 {font-size:30px;}\n #rio-chat .rio-hero-start {width:76px;height:76px;font-size:17px;}\n #rio-chat .rio-hero-start::before {inset:9px;}\n #rio-chat .rio-roadmap {min-height:0;padding:26px 16px 4px;}\n #rio-chat .rio-routecontext {margin:20px 16px 0;padding:20px;border-radius:22px;}\n #rio-chat .rio-routecontext h4 {font-size:20px;}\n #rio-chat .rio-routecurve {display:none;}\n #rio-chat .rio-routepad {display:block;min-height:0;}\n #rio-chat .rio-routestap {\n position:relative;\n display:grid;\n grid-template-columns:56px minmax(0,1fr);\n gap:12px;\n width:auto;\n max-width:none;\n min-height:0;\n margin:0;\n padding:0 0 30px;\n left:auto;\n top:auto;\n }\n #rio-chat .rio-routestap:not(:last-child)::before {\n content:\"\";\n position:absolute;\n left:27px;\n top:56px;\n bottom:8px;\n width:2px;\n background:linear-gradient(180deg,var(--rio-paars),var(--rio-lichtpaars));\n }\n #rio-chat .rio-routestap::after {display:none;}\n #rio-chat .rio-routenummer,\n #rio-chat .rio-routestap-2 .rio-routenummer,\n #rio-chat .rio-routestap-3 .rio-routenummer {\n position:relative;\n left:auto;\n right:auto;\n top:auto;\n grid-column:1;\n width:54px;\n height:54px;\n transform:none;\n box-shadow:0 0 0 7px rgba(250,248,255,.96),0 10px 24px rgba(53,39,131,.18);\n font-size:16px;\n }\n #rio-chat .rio-actieve-stap .rio-routenummer {width:58px;height:58px;font-size:17px;box-shadow:0 0 0 8px #fff1dd,0 14px 30px rgba(242,140,0,.22);}\n #rio-chat .rio-routestap:hover .rio-routenummer,\n #rio-chat .rio-routestap-2:hover .rio-routenummer,\n #rio-chat .rio-routestap-3:hover .rio-routenummer {transform:none;}\n #rio-chat .rio-stepcontent {grid-column:2;min-width:0;}\n #rio-chat .rio-routestap-1 .rio-routekop {font-size:20px;}\n #rio-chat .rio-routekaart {border-radius:20px;}\n #rio-chat .rio-routekaart:hover {transform:none;}\n #rio-chat .rio-routekaart summary,\n #rio-chat .rio-actieve-stap .rio-routekaart summary {\n grid-template-columns:38px minmax(0,1fr) 34px;\n min-height:0;\n gap:12px;\n padding:17px 14px;\n }\n #rio-chat .rio-routeicoon {width:38px;height:38px;border-radius:12px;}\n #rio-chat .rio-routecta {display:none;}\n #rio-chat .rio-routetitel,\n #rio-chat .rio-actieve-stap .rio-routetitel {font-size:17px;}\n #rio-chat .rio-routeinhoud,\n #rio-chat .rio-actieve-stap .rio-routeinhoud,\n #rio-chat .rio-routeextra .rio-routeinhoud {padding:0 15px 18px 64px;font-size:15px;}\n #rio-chat .rio-routeextra {grid-template-columns:1fr;margin:8px 16px 0;padding:20px;border-radius:22px;}\n #rio-chat .rio-routeplanning {grid-template-columns:1fr;padding:20px 16px 28px;gap:16px;}\n #rio-chat .rio-routeblok {padding:20px;border-radius:20px;}\n}\n@media(max-width:420px){\n #rio-chat .rio-routehero h3 {font-size:28px;}\n #rio-chat .rio-routehero p {font-size:15px;}\n #rio-chat .rio-routekaart summary,\n #rio-chat .rio-actieve-stap .rio-routekaart summary {grid-template-columns:1fr 34px;}\n #rio-chat .rio-routeicoon {display:none;}\n #rio-chat .rio-routeinhoud,\n #rio-chat .rio-actieve-stap .rio-routeinhoud,\n #rio-chat .rio-routeextra .rio-routeinhoud {padding-left:15px;}\n}\n@media(prefers-reduced-motion:reduce){\n #rio-chat .rio-routekaart,\n #rio-chat .rio-routenummer,\n #rio-chat .rio-routecta::after,\n #rio-chat .rio-routekaart summary::after {transition:none;}\n #rio-chat .rio-routecurve path,\n #rio-chat .rio-roadmap-in .rio-routecurve path,\n #rio-chat .rio-roadmap-in .rio-routestap,\n #rio-chat .rio-roadmap-in .rio-actieve-stap .rio-routenummer {animation:none;}\n #rio-chat .rio-routecurve path {stroke-dashoffset:0;}\n #rio-chat .rio-routestap {opacity:1;}\n}\n\n/* Persoonlijke route redesign */\n#rio-chat.rio-toont-route .rio-inhoud {width:min(1280px,100%);}\n#rio-chat.rio-toont-route .rio-berichten {padding:20px;background:transparent;}\n#rio-chat .rio-routepop {\n position: fixed;\n inset: 0;\n z-index: 999999;\n display: grid;\n align-items: start;\n justify-items: center;\n width:100%;\n max-width:100vw;\n padding: 24px;\n overflow-y: auto;\n overflow-x:hidden;\n background: rgba(24, 18, 54, 0.68);\n backdrop-filter: blur(7px);\n}\n#rio-chat .rio-routepop[hidden] {\n display: none;\n}\n#rio-chat .rio-routepop-shell {\n width: min(1180px, 100%);\n max-width:100%;\n padding-top: 0;\n}\n#rio-chat .rio-routepop .rio-resultaat {\n width: 100%;\n margin: 0 0 24px;\n}\n@media(max-width:767px) {\n #rio-chat .rio-routepop {\n padding: 10px;\n }\n\n #rio-chat .rio-routepop-shell {\n padding-top: 0;\n }\n}\n#rio-chat .rio-resultaat {\n border:0;\n border-radius:34px;\n background:linear-gradient(180deg,#2d216e 0%,#3a2986 23%,#f3efff 23%,#fbf9ff 100%);\n box-shadow:0 28px 72px rgba(53,39,131,.18);\n color:#312a43;\n}\n#rio-chat .rio-routehero {\n display:block;\n min-height:0;\n padding:46px 56px 96px;\n background:linear-gradient(135deg,#251765 0%,#352783 54%,#4b3392 100%);\n overflow:hidden;\n}\n#rio-chat .rio-routehero::after {display:none;}\n#rio-chat .rio-routehero-tekst {max-width:850px;margin:0 auto;text-align:center;}\n#rio-chat .rio-routehero .rio-routeeyebrow,\n#rio-chat .rio-sectionlabel,\n#rio-chat .rio-mainlabel,\n#rio-chat .rio-stepnav-label,\n#rio-chat .rio-routetype,\n#rio-chat .rio-routemeta,\n#rio-chat .rio-herinneringtijd {\n letter-spacing:0;\n text-transform:uppercase;\n}\n#rio-chat .rio-routehero .rio-routeeyebrow,\n#rio-chat .rio-sectionlabel {\n margin:0 0 12px;\n color:#dcd5ff;\n font-size:12px;\n font-weight:800;\n}\n#rio-chat .rio-routehero h3 {\n margin:0 auto 16px;\n color:#fff;\n font-size:42px;\n line-height:1.14;\n font-weight:800;\n}\n#rio-chat .rio-routehero p:not(.rio-routeeyebrow) {\n margin:0 auto;\n max-width:870px;\n color:#f2efff;\n font-size:17px;\n line-height:1.7;\n}\n#rio-chat .rio-route-actions {\n display:flex;\n flex-wrap:wrap;\n justify-content:center;\n gap:12px;\n margin-top:26px;\n}\n#rio-chat .rio-resultaat .rio-route-button,\n#rio-chat .rio-resultaat .rio-route-button:visited {\n display:inline-flex;\n align-items:center;\n justify-content:center;\n min-height:48px;\n padding:13px 22px;\n border:0;\n border-radius:999px;\n background:var(--rio-oranje);\n color:#fff;\n font-size:15px;\n font-weight:800;\n line-height:1.2;\n text-align:center;\n text-decoration:none;\n box-shadow:0 14px 28px rgba(242,140,0,.28);\n transition:transform .18s ease,background .18s ease,box-shadow .18s ease;\n}\n#rio-chat .rio-resultaat .rio-route-button:hover {\n background:#dc7f00;\n color:#fff;\n transform:translateY(-1px);\n box-shadow:0 17px 32px rgba(242,140,0,.34);\n}\n#rio-chat .rio-resultaat .rio-route-button-soft,\n#rio-chat .rio-resultaat .rio-route-button-soft:visited {\n background:#fff;\n color:var(--rio-paars-donker);\n box-shadow:0 12px 24px rgba(31,20,84,.16);\n}\n#rio-chat .rio-resultaat .rio-route-button-soft:hover {\n background:#fff7ed;\n color:var(--rio-paars-donker);\n}\n#rio-chat .rio-stepnav {\n display:grid;\n grid-template-columns:repeat(4,minmax(0,1fr));\n gap:28px;\n max-width:1000px;\n margin:68px auto 0;\n padding:0;\n list-style:none;\n}\n#rio-chat .rio-stepnav-item {\n position:relative;\n display:grid;\n justify-items:center;\n gap:10px;\n min-width:0;\n text-align:center;\n}\n#rio-chat .rio-stepnav-line {\n position:absolute;\n top:33px;\n left:calc(50% + 52px);\n width:calc(100% - 76px);\n height:3px;\n border-radius:999px;\n background:rgba(206,198,248,.58);\n}\n#rio-chat .rio-stepnav-line-dotted {\n height:0;\n border-top:3px dotted rgba(206,198,248,.62);\n background:transparent;\n}\n#rio-chat .rio-stepnav-dot {\n position:relative;\n z-index:1;\n width:66px;\n height:66px;\n border:3px solid rgba(255,255,255,.48);\n border-radius:50%;\n display:grid;\n place-items:center;\n background:rgba(255,255,255,.11);\n color:#fff;\n font-size:22px;\n line-height:1;\n font-weight:800;\n box-shadow:0 10px 24px rgba(19,11,61,.14);\n}\n#rio-chat .rio-stepnav-active .rio-stepnav-dot {\n width:72px;\n height:72px;\n border-color:rgba(242,140,0,.28);\n background:var(--rio-oranje);\n box-shadow:0 0 0 12px rgba(242,140,0,.25),0 18px 36px rgba(0,0,0,.16);\n}\n#rio-chat .rio-stepnav-label {\n color:var(--rio-oranje);\n font-size:12px;\n font-weight:800;\n}\n#rio-chat .rio-stepnav-item:not(.rio-stepnav-active) .rio-stepnav-label {color:#bcb2ea;}\n#rio-chat .rio-stepnav-title {\n display:block;\n max-width:210px;\n color:#fff;\n font-size:17px;\n line-height:1.35;\n font-weight:800;\n}\n#rio-chat .rio-stepnav-item:not(.rio-stepnav-active) .rio-stepnav-title {color:#e7e2ff;}\n#rio-chat .rio-mainstep {\n position:relative;\n z-index:2;\n display:grid;\n grid-template-columns:minmax(280px,.38fr) minmax(0,.62fr);\n max-width:1160px;\n margin:-52px auto 56px;\n overflow:hidden;\n border-radius:32px;\n background:#fff;\n box-shadow:0 24px 60px rgba(53,39,131,.17);\n}\n#rio-chat .rio-mainstep-no-visual {\n grid-template-columns:1fr;\n}\n#rio-chat .rio-mainvisual {\n min-height:560px;\n display:grid;\n place-items:center;\n padding:46px 34px;\n background:linear-gradient(180deg,#eeeaff 0%,#ddd6fb 100%);\n}\n#rio-chat .rio-miniapp {\n width:min(320px,100%);\n overflow:hidden;\n border-radius:22px;\n background:#fff;\n box-shadow:0 18px 42px rgba(53,39,131,.19);\n}\n#rio-chat .rio-miniapp-head {\n display:flex;\n align-items:center;\n justify-content:space-between;\n gap:14px;\n padding:15px 18px;\n background:var(--rio-paars-donker);\n color:#fff;\n}\n#rio-chat .rio-miniapp-head strong {\n min-width:0;\n overflow:hidden;\n text-overflow:ellipsis;\n white-space:nowrap;\n font-size:15px;\n}\n#rio-chat .rio-miniapp-head span {color:#bcb2ea;font-size:13px;font-weight:700;}\n#rio-chat .rio-miniapp-days {\n display:grid;\n grid-template-columns:repeat(7,1fr);\n gap:7px;\n padding:16px 18px 10px;\n}\n#rio-chat .rio-miniapp-day {\n height:31px;\n border-radius:8px;\n display:grid;\n place-items:center;\n background:#f3f0ff;\n color:#9084b3;\n font-size:13px;\n font-weight:800;\n}\n#rio-chat .rio-miniapp-active {background:var(--rio-paars);color:#fff;}\n#rio-chat .rio-miniapp-lessons {display:grid;gap:10px;padding:0 18px 16px;}\n#rio-chat .rio-miniapp-row {\n display:grid;\n grid-template-columns:28px minmax(0,1fr);\n gap:10px;\n align-items:center;\n min-height:48px;\n padding:9px 12px;\n border-radius:12px;\n background:#f7f5fd;\n color:#6d647e;\n}\n#rio-chat .rio-miniapp-row-active {background:#cec6f8;color:var(--rio-paars-donker);}\n#rio-chat .rio-miniapp-row span {\n width:24px;\n height:24px;\n display:grid;\n place-items:center;\n border-radius:50%;\n background:#fff;\n color:var(--rio-paars);\n font-weight:800;\n font-size:12px;\n}\n#rio-chat .rio-miniapp-row p {\n margin:0;\n min-width:0;\n overflow:hidden;\n text-overflow:ellipsis;\n white-space:nowrap;\n font-size:14px;\n font-weight:800;\n}\n#rio-chat .rio-miniapp-progress {height:6px;margin:0 18px 12px;border-radius:999px;background:#e8e2f4;overflow:hidden;}\n#rio-chat .rio-miniapp-progress span {display:block;width:18%;height:100%;background:var(--rio-paars);}\n#rio-chat .rio-miniapp-note {margin:0;padding:0 18px 18px;color:#9187aa;font-size:13px;}\n#rio-chat .rio-maincopy {padding:46px 54px 48px;}\n#rio-chat .rio-mainlabel {\n display:inline-flex;\n margin:0 0 22px;\n padding:10px 16px;\n border-radius:8px;\n background:var(--rio-paars-donker);\n color:#fff;\n font-size:12px;\n line-height:1;\n font-weight:800;\n}\n#rio-chat .rio-maincopy h3 {\n margin:0 0 10px;\n color:#18142b;\n font-size:36px;\n line-height:1.14;\n font-weight:800;\n}\n#rio-chat .rio-mainmeta {\n margin:0 0 24px;\n color:#9188a8;\n font-size:16px;\n line-height:1.55;\n}\n#rio-chat .rio-mainintro {\n margin:0 0 26px;\n color:#5c5570;\n font-size:18px;\n line-height:1.72;\n}\n#rio-chat .rio-mainsection {margin-top:28px;}\n#rio-chat .rio-mainsection h4 {\n margin:0 0 12px;\n color:#8e83aa;\n font-size:13px;\n line-height:1.3;\n font-weight:800;\n text-transform:uppercase;\n letter-spacing:0;\n}\n#rio-chat .rio-mainsection p {\n margin:0;\n color:#5c5570;\n font-size:17px;\n line-height:1.7;\n}\n#rio-chat .rio-change-list {\n display:grid;\n gap:14px;\n margin:0;\n padding:0;\n list-style:none;\n color:#28213e;\n font-size:17px;\n line-height:1.45;\n}\n#rio-chat .rio-change-list li {position:relative;padding-left:34px;}\n#rio-chat .rio-change-list li::before {\n content:\"\";\n position:absolute;\n left:0;\n top:.2em;\n width:20px;\n height:20px;\n border-radius:50%;\n background:#b8edc1;\n}\n#rio-chat .rio-todaybox {\n display:flex;\n gap:16px;\n align-items:flex-start;\n margin-top:32px;\n padding:21px 24px;\n border:1px solid #ffd4a2;\n border-radius:18px;\n background:#fff7ed;\n color:#211a32;\n font-size:17px;\n line-height:1.55;\n}\n#rio-chat .rio-todaybox strong {color:#c46a00;font-size:18px;}\n#rio-chat .rio-todaybox .rio-route-button {\n flex:0 0 auto;\n margin-left:auto;\n box-shadow:none;\n}\n#rio-chat .rio-weeksteps,\n#rio-chat .rio-practical,\n#rio-chat .rio-reflection,\n#rio-chat .rio-deepening,\n#rio-chat .rio-growth,\n#rio-chat .rio-ai,\n#rio-chat .rio-expert,\n#rio-chat .rio-progress,\n#rio-chat .rio-routeend {\n max-width:1160px;\n margin:0 auto 48px;\n}\n#rio-chat .rio-weeksteps,\n#rio-chat .rio-deepening,\n#rio-chat .rio-growth,\n#rio-chat .rio-progress,\n#rio-chat .rio-routeend {\n padding:0 8px;\n}\n#rio-chat .rio-weeksteps .rio-sectionlabel,\n#rio-chat .rio-deepening .rio-sectionlabel,\n#rio-chat .rio-growth .rio-sectionlabel,\n#rio-chat .rio-progress .rio-sectionlabel {color:#7562c9;}\n#rio-chat .rio-weeksteps h3,\n#rio-chat .rio-reminderpanel h3,\n#rio-chat .rio-supportpanel h3,\n#rio-chat .rio-reflection h3,\n#rio-chat .rio-deepening h3,\n#rio-chat .rio-growth h3,\n#rio-chat .rio-ai h3,\n#rio-chat .rio-expert h3,\n#rio-chat .rio-progress h3,\n#rio-chat .rio-routeend h3 {\n margin:0 0 18px;\n color:var(--rio-paars-donker);\n font-size:30px;\n line-height:1.2;\n font-weight:800;\n}\n#rio-chat .rio-weekgrid {\n display:grid;\n grid-template-columns:repeat(3,minmax(0,1fr));\n gap:18px;\n}\n#rio-chat .rio-weekcard {\n padding:24px;\n border:1px solid rgba(206,198,248,.78);\n border-radius:24px;\n background:linear-gradient(180deg,#fff,#f6f2ff);\n box-shadow:0 12px 28px rgba(53,39,131,.06);\n}\n#rio-chat .rio-weeknr {\n width:40px;\n height:40px;\n display:grid;\n place-items:center;\n margin-bottom:18px;\n border-radius:50%;\n background:#eeeaff;\n color:var(--rio-paars-donker);\n font-weight:800;\n}\n#rio-chat .rio-weekcard h4 {margin:0 0 8px;color:var(--rio-paars-donker);font-size:18px;}\n#rio-chat .rio-weekcard p {margin:0;color:#5f5870;font-size:15px;line-height:1.65;}\n#rio-chat .rio-practical {\n display:grid;\n grid-template-columns:minmax(0,1.08fr) minmax(310px,.92fr);\n gap:24px;\n}\n#rio-chat .rio-reminderpanel,\n#rio-chat .rio-supportpanel,\n#rio-chat .rio-reflection,\n#rio-chat .rio-growth,\n#rio-chat .rio-progress {\n padding:30px;\n border-radius:28px;\n background:rgba(255,255,255,.78);\n box-shadow:0 16px 40px rgba(53,39,131,.08);\n}\n#rio-chat .rio-reminderpanel .rio-sectionlabel,\n#rio-chat .rio-supportpanel .rio-sectionlabel,\n#rio-chat .rio-reflection .rio-sectionlabel {color:#7562c9;}\n#rio-chat .rio-notification {\n display:grid;\n grid-template-columns:42px minmax(0,1fr);\n gap:14px;\n align-items:flex-start;\n margin-top:14px;\n padding:16px;\n border-radius:20px;\n background:#f5f1ff;\n box-shadow:0 10px 26px rgba(53,39,131,.08);\n}\n#rio-chat .rio-notification-icon {\n width:42px;\n height:42px;\n display:grid;\n place-items:center;\n border-radius:14px;\n background:var(--rio-paars-donker);\n color:#fff;\n font-weight:800;\n}\n#rio-chat .rio-notification p {margin:0;color:#5d566f;font-size:14px;line-height:1.55;}\n#rio-chat .rio-notification strong {display:block;margin-bottom:4px;color:var(--rio-paars-donker);}\n#rio-chat .rio-supportpanel > p:not(.rio-sectionlabel) {margin:0 0 20px;color:#5f5870;font-size:15px;line-height:1.65;}\n#rio-chat .rio-reflection {\n display:grid;\n grid-template-columns:minmax(0,.9fr) minmax(310px,1.1fr);\n gap:34px;\n align-items:start;\n}\n#rio-chat .rio-reflection p:not(.rio-sectionlabel) {margin:0;color:#5f5870;font-size:16px;line-height:1.7;}\n#rio-chat .rio-reflectionform {\n display:grid;\n gap:13px;\n padding:22px;\n border-radius:22px;\n background:#f8f5ff;\n}\n#rio-chat .rio-reflectionform label {color:var(--rio-paars-donker);font-size:14px;font-weight:800;}\n#rio-chat .rio-rating {display:grid;grid-template-columns:repeat(5,1fr);gap:8px;margin-bottom:12px;}\n#rio-chat .rio-rating button {\n min-height:44px;\n border:0;\n border-radius:14px;\n background:#fff;\n color:var(--rio-paars-donker);\n font-weight:800;\n cursor:pointer;\n}\n#rio-chat .rio-rating button[aria-pressed=\"true\"] {background:var(--rio-paars-donker);color:#fff;}\n#rio-chat .rio-reflection textarea {\n width:100%;\n min-height:118px;\n padding:15px 16px;\n border:0;\n border-radius:16px;\n resize:vertical;\n background:#fff;\n color:#342d45;\n font:inherit;\n line-height:1.55;\n}\n#rio-chat .rio-deepgrid {\n display:grid;\n grid-template-columns:minmax(0,1.18fr) minmax(0,.92fr);\n gap:18px;\n}\n#rio-chat .rio-deepgrid .rio-routekaart:first-child {grid-row:span 2;}\n#rio-chat .rio-routekaart {\n border:1px solid rgba(206,198,248,.72);\n border-radius:24px;\n background:#fff;\n box-shadow:0 12px 30px rgba(53,39,131,.075);\n}\n#rio-chat .rio-resource-tint {background:#f8f5ff;}\n#rio-chat .rio-resource-soft {background:#fff;}\n#rio-chat .rio-resource-human {background:linear-gradient(180deg,#fff,#fff7ed);}\n#rio-chat .rio-routekaart summary {\n grid-template-columns:46px minmax(0,1fr) auto 36px;\n min-height:92px;\n padding:20px;\n}\n#rio-chat .rio-routeinhoud {padding:0 24px 24px 80px;}\n#rio-chat .rio-growth {\n overflow:hidden;\n background:linear-gradient(180deg,#fff,#f8f5ff);\n}\n#rio-chat .rio-growthintro {max-width:700px;margin:0 0 24px;color:#5f5870;font-size:16px;line-height:1.7;}\n#rio-chat .rio-growth-visual {\n position:relative;\n height:430px;\n margin-top:22px;\n}\n#rio-chat .rio-growth-visual svg {\n position:absolute;\n inset:40px 0 0;\n width:100%;\n height:300px;\n overflow:visible;\n}\n#rio-chat .rio-growthbase,\n#rio-chat .rio-growthline {\n fill:none;\n stroke-linecap:round;\n stroke-width:7;\n}\n#rio-chat .rio-growthbase {stroke:#ded8f7;}\n#rio-chat .rio-growthline {\n stroke:var(--rio-paars-donker);\n stroke-dasharray:1600;\n stroke-dashoffset:1600;\n}\n#rio-chat .rio-growpoint {\n position:absolute;\n width:164px;\n padding:14px;\n border-radius:18px;\n background:rgba(255,255,255,.94);\n box-shadow:0 12px 28px rgba(53,39,131,.1);\n color:#5f5870;\n font-size:13px;\n line-height:1.45;\n opacity:0;\n transform:translateY(14px);\n}\n#rio-chat .rio-growpoint::before {\n content:\"\";\n display:block;\n width:18px;\n height:18px;\n margin-bottom:8px;\n border:5px solid #eeeaff;\n border-radius:50%;\n background:var(--rio-paars-donker);\n}\n#rio-chat .rio-growpoint b {display:block;margin-bottom:3px;color:var(--rio-paars-donker);font-size:12px;text-transform:uppercase;letter-spacing:0;}\n#rio-chat .rio-growpoint small {font-size:12px;}\n#rio-chat .rio-growpoint.p1 {left:1%;top:284px;}\n#rio-chat .rio-growpoint.p2 {left:24%;top:42px;}\n#rio-chat .rio-growpoint.p3 {left:45%;top:254px;}\n#rio-chat .rio-growpoint.p4 {left:68%;top:12px;width:190px;border:1px solid #ffd4a2;background:#fff7ed;}\n#rio-chat .rio-growpoint.p5 {right:0;top:72px;}\n#rio-chat .rio-growpoint-good::before {width:26px;height:26px;border-color:#ffe6c3;background:var(--rio-oranje);}\n#rio-chat .rio-growpoint-good b {color:#c46a00;}\n#rio-chat .rio-growth-mobile {display:none;}\n#rio-chat .rio-ai {\n padding:34px;\n border-radius:30px;\n background:linear-gradient(135deg,#251765,#4b3392);\n color:#fff;\n box-shadow:0 20px 50px rgba(53,39,131,.16);\n}\n#rio-chat .rio-ai .rio-sectionlabel {color:#f6cb96;}\n#rio-chat .rio-ai h3 {color:#fff;}\n#rio-chat .rio-ai p:not(.rio-sectionlabel) {max-width:780px;margin:0 0 24px;color:#f2efff;font-size:17px;line-height:1.68;}\n#rio-chat .rio-aigrid {display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:18px;}\n#rio-chat .rio-aigrid span {\n min-height:78px;\n padding:16px;\n border:1px solid rgba(255,255,255,.18);\n border-radius:18px;\n background:rgba(255,255,255,.08);\n color:#fff;\n font-weight:800;\n line-height:1.35;\n}\n#rio-chat .rio-ai-note {display:block;margin-top:22px;color:#fff;font-size:16px;}\n#rio-chat .rio-expert {\n display:grid;\n grid-template-columns:minmax(0,.85fr) minmax(310px,1.15fr);\n gap:28px;\n align-items:center;\n padding:34px;\n border-radius:30px;\n background:#fff;\n box-shadow:0 16px 40px rgba(53,39,131,.08);\n}\n#rio-chat .rio-expert .rio-sectionlabel {color:#7562c9;}\n#rio-chat .rio-expert p:not(.rio-sectionlabel) {margin:0;color:#5f5870;font-size:16px;line-height:1.7;}\n#rio-chat .rio-progress {background:#fff;}\n#rio-chat .rio-progresstrack {\n display:grid;\n grid-template-columns:repeat(4,minmax(0,1fr));\n gap:10px;\n margin-top:24px;\n}\n#rio-chat .rio-progresstrack span {\n min-height:76px;\n padding:16px;\n border-radius:18px;\n background:#f5f1ff;\n color:#6a607c;\n font-size:14px;\n font-weight:800;\n line-height:1.4;\n}\n#rio-chat .rio-progresstrack .rio-progressdone {background:#eeeaff;color:var(--rio-paars-donker);}\n#rio-chat .rio-routeend {\n position:relative;\n margin-bottom:0;\n padding:36px 40px 52px;\n border-radius:30px 30px 0 0;\n background:linear-gradient(180deg,#fff7ed,#fff);\n text-align:center;\n}\n#rio-chat .rio-routeend::after {\n content:\"\";\n display:block;\n width:120px;\n height:3px;\n margin:24px auto 0;\n border-radius:999px;\n background:linear-gradient(90deg,var(--rio-paars),var(--rio-oranje));\n}\n#rio-chat .rio-routeend p {margin:0;color:#5f5870;font-size:17px;}\n#rio-chat .rio-roadmap-in .rio-stepnav-item,\n#rio-chat .rio-roadmap-in .rio-mainstep,\n#rio-chat .rio-roadmap-in .rio-weeksteps,\n#rio-chat .rio-roadmap-in .rio-practical,\n#rio-chat .rio-roadmap-in .rio-reflection,\n#rio-chat .rio-roadmap-in .rio-deepening,\n#rio-chat .rio-roadmap-in .rio-growth,\n#rio-chat .rio-roadmap-in .rio-ai,\n#rio-chat .rio-roadmap-in .rio-expert,\n#rio-chat .rio-roadmap-in .rio-progress,\n#rio-chat .rio-roadmap-in .rio-routeend {animation:rioRouteFade .65s ease forwards;}\n#rio-chat .rio-stepnav-item,\n#rio-chat .rio-mainstep,\n#rio-chat .rio-weeksteps,\n#rio-chat .rio-practical,\n#rio-chat .rio-reflection,\n#rio-chat .rio-deepening,\n#rio-chat .rio-growth,\n#rio-chat .rio-ai,\n#rio-chat .rio-expert,\n#rio-chat .rio-progress,\n#rio-chat .rio-routeend {opacity:0;transform:translateY(18px);}\n#rio-chat .rio-roadmap-in .rio-mainstep {animation-delay:.08s;}\n#rio-chat .rio-roadmap-in .rio-weeksteps {animation-delay:.16s;}\n#rio-chat .rio-roadmap-in .rio-practical {animation-delay:.24s;}\n#rio-chat .rio-roadmap-in .rio-reflection {animation-delay:.32s;}\n#rio-chat .rio-roadmap-in .rio-deepening {animation-delay:.40s;}\n#rio-chat .rio-roadmap-in .rio-growthline {animation:rioGrowthDraw 1.5s ease forwards .45s;}\n#rio-chat .rio-roadmap-in .rio-growpoint {animation:rioRouteFade .45s ease forwards;}\n#rio-chat .rio-roadmap-in .rio-growpoint.p1 {animation-delay:.65s;}\n#rio-chat .rio-roadmap-in .rio-growpoint.p2 {animation-delay:.78s;}\n#rio-chat .rio-roadmap-in .rio-growpoint.p3 {animation-delay:.91s;}\n#rio-chat .rio-roadmap-in .rio-growpoint.p4 {animation-delay:1.04s;}\n#rio-chat .rio-roadmap-in .rio-growpoint.p5 {animation-delay:1.17s;}\n@keyframes rioRouteFade {\n from {opacity:0;transform:translateY(18px);}\n to {opacity:1;transform:translateY(0);}\n}\n@keyframes rioGrowthDraw {to {stroke-dashoffset:0;}}\n@media(max-width:1100px){\n #rio-chat .rio-routehero {padding:40px 32px 88px;}\n\t #rio-chat .rio-mainstep {margin-left:26px;margin-right:26px;grid-template-columns:minmax(250px,.36fr) minmax(0,.64fr);}\n\t #rio-chat .rio-mainstep-no-visual {grid-template-columns:1fr;}\n #rio-chat .rio-maincopy {padding:40px 34px;}\n #rio-chat .rio-maincopy h3 {font-size:31px;}\n #rio-chat .rio-aigrid {grid-template-columns:repeat(2,minmax(0,1fr));}\n}\n@media(max-width:767px){\n #rio-chat.rio-toont-route .rio-berichten {padding:10px;}\n #rio-chat .rio-resultaat {\n border-radius:26px;\n background:linear-gradient(180deg,#2d216e 0%,#3a2986 18%,#f3efff 18%,#fbf9ff 100%);\n }\n #rio-chat .rio-routehero {padding:30px 18px 54px;}\n #rio-chat .rio-routehero h3 {font-size:31px;}\n #rio-chat .rio-routehero p:not(.rio-routeeyebrow) {font-size:15px;}\n #rio-chat .rio-route-actions {align-items:stretch;}\n #rio-chat .rio-resultaat .rio-route-button {width:100%;min-height:50px;}\n #rio-chat .rio-stepnav {\n grid-template-columns:1fr;\n gap:18px;\n margin-top:34px;\n text-align:left;\n }\n #rio-chat .rio-stepnav-item {\n grid-template-columns:58px minmax(0,1fr);\n justify-items:start;\n gap:2px 14px;\n text-align:left;\n }\n #rio-chat .rio-stepnav-dot {grid-row:1 / 3;width:48px;height:48px;font-size:16px;}\n #rio-chat .rio-stepnav-active .rio-stepnav-dot {width:52px;height:52px;box-shadow:0 0 0 8px rgba(242,140,0,.22),0 12px 24px rgba(0,0,0,.12);}\n #rio-chat .rio-stepnav-line {left:24px;top:58px;width:3px;height:24px;}\n #rio-chat .rio-stepnav-title {max-width:none;font-size:16px;}\n #rio-chat .rio-mainstep {\n grid-template-columns:1fr;\n margin:-32px 14px 34px;\n border-radius:26px;\n }\n #rio-chat .rio-mainvisual {min-height:0;padding:28px 18px;}\n #rio-chat .rio-miniapp {width:min(310px,100%);}\n #rio-chat .rio-maincopy {padding:30px 22px 28px;}\n #rio-chat .rio-maincopy h3 {font-size:29px;}\n #rio-chat .rio-mainintro,\n #rio-chat .rio-mainsection p,\n #rio-chat .rio-change-list,\n #rio-chat .rio-todaybox {font-size:15px;}\n #rio-chat .rio-todaybox {display:block;padding:18px;}\n #rio-chat .rio-todaybox strong {display:block;margin-bottom:6px;}\n #rio-chat .rio-todaybox .rio-route-button {margin:14px 0 0;}\n #rio-chat .rio-weeksteps,\n #rio-chat .rio-practical,\n #rio-chat .rio-reflection,\n #rio-chat .rio-deepening,\n #rio-chat .rio-growth,\n #rio-chat .rio-ai,\n #rio-chat .rio-expert,\n #rio-chat .rio-progress,\n #rio-chat .rio-routeend {margin:0 14px 28px;padding:24px 18px;}\n #rio-chat .rio-weeksteps h3,\n #rio-chat .rio-reminderpanel h3,\n #rio-chat .rio-supportpanel h3,\n #rio-chat .rio-reflection h3,\n #rio-chat .rio-deepening h3,\n #rio-chat .rio-growth h3,\n #rio-chat .rio-ai h3,\n #rio-chat .rio-expert h3,\n #rio-chat .rio-progress h3,\n #rio-chat .rio-routeend h3 {font-size:24px;}\n #rio-chat .rio-weekgrid,\n #rio-chat .rio-practical,\n #rio-chat .rio-reflection,\n #rio-chat .rio-deepgrid,\n #rio-chat .rio-expert,\n #rio-chat .rio-progresstrack {grid-template-columns:1fr;}\n #rio-chat .rio-reminderpanel,\n #rio-chat .rio-supportpanel,\n #rio-chat .rio-reflection,\n #rio-chat .rio-growth,\n #rio-chat .rio-progress {padding:22px 18px;border-radius:24px;}\n #rio-chat .rio-routekaart summary {grid-template-columns:40px minmax(0,1fr) 34px;gap:12px;padding:17px 14px;}\n #rio-chat .rio-routecta {display:none;}\n #rio-chat .rio-routeinhoud {padding:0 15px 18px 66px;}\n #rio-chat .rio-deepgrid .rio-routekaart:first-child {grid-row:auto;}\n #rio-chat .rio-growth-visual {display:none;}\n #rio-chat .rio-growth-mobile {\n display:grid;\n gap:14px;\n margin:22px 0 0;\n padding:0;\n list-style:none;\n }\n #rio-chat .rio-growth-mobile li {\n position:relative;\n width:88%;\n padding:15px 16px 15px 48px;\n border-radius:18px;\n background:#fff;\n color:#5f5870;\n box-shadow:0 10px 24px rgba(53,39,131,.08);\n }\n #rio-chat .rio-growth-mobile li:nth-child(even) {justify-self:end;}\n #rio-chat .rio-growth-mobile li::before {\n content:\"\";\n position:absolute;\n left:17px;\n top:18px;\n width:16px;\n height:16px;\n border-radius:50%;\n background:var(--rio-paars-donker);\n box-shadow:0 0 0 6px #eeeaff;\n }\n #rio-chat .rio-growth-mobile .rio-mobile-good {background:#fff7ed;color:#33243a;}\n #rio-chat .rio-growth-mobile .rio-mobile-good::before {background:var(--rio-oranje);box-shadow:0 0 0 7px #ffe6c3;}\n #rio-chat .rio-aigrid {grid-template-columns:1fr;}\n}\n@media(max-width:420px){\n #rio-chat .rio-routehero h3 {font-size:28px;}\n #rio-chat .rio-miniapp-head strong {font-size:14px;}\n #rio-chat .rio-miniapp-days {gap:5px;padding-left:14px;padding-right:14px;}\n #rio-chat .rio-miniapp-day {height:28px;}\n #rio-chat .rio-routeicoon {display:none;}\n #rio-chat .rio-routekaart summary {grid-template-columns:minmax(0,1fr) 34px;}\n #rio-chat .rio-routeinhoud {padding-left:15px;}\n}\n@media(prefers-reduced-motion:reduce){\n #rio-chat .rio-stepnav-item,\n #rio-chat .rio-mainstep,\n #rio-chat .rio-weeksteps,\n #rio-chat .rio-practical,\n #rio-chat .rio-reflection,\n #rio-chat .rio-deepening,\n #rio-chat .rio-growth,\n #rio-chat .rio-ai,\n #rio-chat .rio-expert,\n #rio-chat .rio-progress,\n #rio-chat .rio-routeend,\n #rio-chat .rio-growpoint {\n opacity:1;\n transform:none;\n animation:none;\n }\n #rio-chat .rio-growthline {stroke-dashoffset:0;animation:none;}\n}\n\n/* Klikbare routestappen */\n#rio-chat .rio-resultaat {\n overflow: visible;\n}\n#rio-chat .rio-routepage {\n overflow: hidden;\n border-radius: 34px;\n}\n#rio-chat .rio-routeintro {\n padding: 46px 56px 28px;\n background: linear-gradient(135deg, #251765 0%, #352783 54%, #4b3392 100%);\n color: #fff;\n text-align: center;\n}\n#rio-chat .rio-routeintro h3 {\n margin: 0 auto 14px;\n max-width: 780px;\n color: #fff;\n font-size: 42px;\n line-height: 1.14;\n font-weight: 800;\n}\n#rio-chat .rio-routefocus {\n max-width: 840px;\n margin: 0 auto;\n color: #f2efff;\n font-size: 17px;\n line-height: 1.65;\n}\n#rio-chat .rio-routesticky {\n position: sticky;\n top: 10px;\n z-index: 6;\n padding: 0 24px 24px;\n margin-top: -1px;\n background: linear-gradient(180deg, #4b3392 0%, rgba(75, 51, 146, .92) 58%, rgba(75, 51, 146, 0) 100%);\n}\n#rio-chat .rio-routesticky .rio-stepnav {\n display: flex;\n grid-template-columns: none;\n gap: 8px;\n max-width: 1160px;\n margin: 0 auto;\n padding: 8px;\n overflow-x: auto;\n overscroll-behavior-x: contain;\n scroll-snap-type: x proximity;\n list-style: none;\n border: 1px solid rgba(206, 198, 248, .56);\n border-radius: 24px;\n background: rgba(255, 255, 255, .96);\n box-shadow: 0 18px 42px rgba(25, 15, 71, .2);\n}\n#rio-chat .rio-routesticky .rio-stepnav-item {\n flex: 1 0 230px;\n display: block;\n min-width: 0;\n scroll-snap-align: start;\n text-align: left;\n}\n#rio-chat .rio-stepnav-button {\n display: grid;\n grid-template-columns: 54px minmax(0, 1fr);\n gap: 12px;\n align-items: center;\n width: 100%;\n min-height: 86px;\n padding: 14px;\n border: 0;\n border-radius: 18px;\n background: transparent;\n color: #4e4665;\n text-align: left;\n cursor: pointer;\n transition: transform .18s ease, background .18s ease, box-shadow .18s ease;\n}\n#rio-chat .rio-stepnav-button:hover {\n background: #f8f5ff;\n}\n#rio-chat .rio-stepnav-button:focus-visible {\n outline: 3px solid var(--rio-oranje);\n outline-offset: 3px;\n}\n#rio-chat .rio-stepnav-button[aria-current=\"step\"] {\n background: #fff7ed;\n box-shadow: inset 0 0 0 2px #ffd4a2;\n transform: scale(1.02);\n}\n#rio-chat .rio-stepnav-button .rio-stepnav-dot {\n width: 46px;\n height: 46px;\n border: 3px solid #ded8f7;\n border-radius: 50%;\n display: grid;\n place-items: center;\n background: #fff;\n color: var(--rio-paars-donker);\n font-size: 18px;\n font-weight: 800;\n box-shadow: none;\n transition: transform .18s ease, background .18s ease, color .18s ease, border-color .18s ease;\n}\n#rio-chat .rio-stepnav-button[aria-current=\"step\"] .rio-stepnav-dot {\n border-color: rgba(242, 140, 0, .22);\n background: var(--rio-oranje);\n color: #fff;\n transform: scale(1.14);\n box-shadow: 0 0 0 8px rgba(242, 140, 0, .16);\n}\n#rio-chat .rio-stepnav-text {\n display: grid;\n gap: 4px;\n min-width: 0;\n}\n#rio-chat .rio-stepnav-button .rio-stepnav-label {\n color: #7562c9;\n font-size: 11px;\n font-weight: 800;\n text-transform: uppercase;\n}\n#rio-chat .rio-stepnav-button[aria-current=\"step\"] .rio-stepnav-label {\n color: #c46a00;\n}\n#rio-chat .rio-stepnav-button .rio-stepnav-title {\n max-width: none;\n overflow: hidden;\n color: #201a35;\n font-size: 15px;\n line-height: 1.35;\n font-weight: 800;\n text-overflow: ellipsis;\n}\n#rio-chat .rio-stage-panel,\n#rio-chat .rio-route-static {\n max-width: 1160px;\n margin: 0 auto 46px;\n padding: 0 8px;\n}\n#rio-chat .rio-stage-panel {\n padding-top: 6px;\n}\n#rio-chat .rio-stage-heading {\n margin: 0 0 22px;\n}\n#rio-chat .rio-stage-heading h3 {\n margin: 0 0 10px;\n color: var(--rio-paars-donker);\n font-size: 30px;\n line-height: 1.2;\n font-weight: 800;\n}\n#rio-chat .rio-stage-heading p {\n max-width: 760px;\n margin: 0;\n color: #5f5870;\n font-size: 16px;\n line-height: 1.7;\n}\n#rio-chat .rio-active-advice {\n display: grid;\n grid-template-columns: minmax(280px, .36fr) minmax(0, .64fr);\n overflow: hidden;\n border-radius: 30px;\n background: #fff;\n box-shadow: 0 22px 54px rgba(53, 39, 131, .14);\n}\n#rio-chat .rio-active-visual {\n min-height: 500px;\n display: grid;\n place-items: center;\n padding: 42px 30px;\n background: linear-gradient(180deg, #eeeaff 0%, #ddd6fb 100%);\n}\n#rio-chat .rio-active-copy {\n padding: 44px 50px 46px;\n}\n#rio-chat .rio-active-copy h3 {\n margin: 0 0 10px;\n color: #18142b;\n font-size: 34px;\n line-height: 1.14;\n font-weight: 800;\n}\n#rio-chat .rio-productmeta {\n margin: 0 0 22px;\n color: #9188a8;\n font-size: 15px;\n line-height: 1.55;\n}\n#rio-chat .rio-contentblock {\n margin-top: 24px;\n}\n#rio-chat .rio-contentblock h4,\n#rio-chat .rio-addon h4,\n#rio-chat .rio-static-card h4 {\n margin: 0 0 10px;\n color: #8e83aa;\n font-size: 13px;\n line-height: 1.3;\n font-weight: 800;\n text-transform: uppercase;\n}\n#rio-chat .rio-contentblock p,\n#rio-chat .rio-addon p,\n#rio-chat .rio-static-card p {\n margin: 0;\n color: #5c5570;\n font-size: 16px;\n line-height: 1.68;\n}\n#rio-chat .rio-stage-addons {\n display: grid;\n gap: 18px;\n margin-top: 24px;\n}\n#rio-chat .rio-addon {\n padding: 24px;\n border: 1px solid rgba(206, 198, 248, .62);\n border-radius: 24px;\n background: rgba(255, 255, 255, .78);\n box-shadow: 0 14px 32px rgba(53, 39, 131, .07);\n}\n#rio-chat .rio-addon h3 {\n margin: 0 0 16px;\n color: var(--rio-paars-donker);\n font-size: 22px;\n line-height: 1.22;\n font-weight: 800;\n}\n#rio-chat .rio-choice-grid {\n display: grid;\n grid-template-columns: repeat(3, minmax(0, 1fr));\n gap: 18px;\n}\n#rio-chat .rio-compare-card {\n padding: 24px;\n border: 1px solid rgba(206, 198, 248, .72);\n border-radius: 24px;\n background: #fff;\n box-shadow: 0 12px 30px rgba(53, 39, 131, .075);\n}\n#rio-chat .rio-compare-card h4 {\n margin: 0 0 8px;\n color: var(--rio-paars-donker);\n font-size: 20px;\n line-height: 1.25;\n}\n#rio-chat .rio-compare-card p {\n margin: 0;\n color: #5f5870;\n font-size: 15px;\n line-height: 1.62;\n}\n#rio-chat .rio-support-grid {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n gap: 18px;\n}\n#rio-chat .rio-route-static {\n display: grid;\n gap: 24px;\n}\n#rio-chat .rio-static-card {\n padding: 30px;\n border-radius: 28px;\n background: rgba(255, 255, 255, .86);\n box-shadow: 0 16px 40px rgba(53, 39, 131, .08);\n}\n#rio-chat .rio-static-card h3 {\n margin: 0 0 14px;\n color: var(--rio-paars-donker);\n font-size: 28px;\n line-height: 1.22;\n font-weight: 800;\n}\n#rio-chat .rio-static-grid {\n display: grid;\n grid-template-columns: repeat(4, minmax(0, 1fr));\n gap: 12px;\n margin-top: 20px;\n}\n#rio-chat .rio-static-grid span {\n min-height: 74px;\n padding: 15px;\n border-radius: 18px;\n background: #f5f1ff;\n color: var(--rio-paars-donker);\n font-size: 14px;\n font-weight: 800;\n line-height: 1.35;\n}\n#rio-chat .rio-ai-inline {\n margin-top: 20px;\n padding: 22px;\n border-radius: 22px;\n background: linear-gradient(135deg, #251765, #4b3392);\n color: #fff;\n}\n#rio-chat .rio-ai-inline h3,\n#rio-chat .rio-ai-inline p {\n color: #fff;\n}\n#rio-chat .rio-ai-inline .rio-sectionlabel {\n color: #f6cb96;\n}\n#rio-chat .rio-offer {\n border: 1px solid #ffd4a2;\n background: linear-gradient(180deg, #fff7ed, #fff);\n text-align: center;\n}\n#rio-chat .rio-offer p {\n max-width: 760px;\n margin-left: auto;\n margin-right: auto;\n}\n#rio-chat .rio-faq details {\n padding: 18px 0;\n border-top: 1px solid rgba(206, 198, 248, .72);\n}\n#rio-chat .rio-faq summary {\n cursor: pointer;\n color: var(--rio-paars-donker);\n font-weight: 800;\n}\n#rio-chat .rio-faq summary:focus-visible {\n outline: 3px solid var(--rio-oranje);\n outline-offset: 4px;\n border-radius: 8px;\n}\n#rio-chat .rio-faq details p {\n margin-top: 10px;\n}\n@media(max-width:1100px){\n #rio-chat .rio-active-advice {grid-template-columns:minmax(250px,.36fr) minmax(0,.64fr);margin-left:26px;margin-right:26px;}\n #rio-chat .rio-active-copy {padding:40px 34px;}\n #rio-chat .rio-static-grid {grid-template-columns:repeat(2,minmax(0,1fr));}\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage {border-radius:26px;}\n #rio-chat .rio-routeintro {padding:30px 18px 22px;}\n #rio-chat .rio-routeintro h3 {font-size:31px;}\n #rio-chat .rio-routefocus {font-size:15px;}\n #rio-chat .rio-routesticky {\n top: 8px;\n padding: 0 10px 18px;\n }\n #rio-chat .rio-routesticky .rio-stepnav {\n max-width: 100%;\n border-radius: 20px;\n }\n #rio-chat .rio-routesticky .rio-stepnav-item {\n flex: 0 0 250px;\n }\n #rio-chat .rio-stepnav-button {\n min-height: 78px;\n grid-template-columns: 48px minmax(0, 1fr);\n padding: 12px;\n }\n #rio-chat .rio-stepnav-button[aria-current=\"step\"] {\n transform: none;\n }\n #rio-chat .rio-stage-panel,\n #rio-chat .rio-route-static {\n margin: 0 14px 30px;\n padding: 0;\n }\n #rio-chat .rio-stage-heading h3,\n #rio-chat .rio-static-card h3 {\n font-size: 24px;\n }\n #rio-chat .rio-active-advice {\n grid-template-columns: 1fr;\n margin: 0;\n border-radius: 26px;\n }\n #rio-chat .rio-active-visual {\n min-height: 0;\n padding: 28px 18px;\n }\n #rio-chat .rio-active-copy {\n padding: 30px 22px 28px;\n }\n #rio-chat .rio-active-copy h3 {\n font-size: 29px;\n }\n #rio-chat .rio-choice-grid,\n #rio-chat .rio-support-grid,\n #rio-chat .rio-static-grid {\n grid-template-columns: 1fr;\n }\n #rio-chat .rio-static-card,\n #rio-chat .rio-addon {\n padding: 22px 18px;\n border-radius: 24px;\n }\n}\n@media(max-width:420px){\n #rio-chat .rio-routesticky .rio-stepnav-item {flex-basis:230px;}\n #rio-chat .rio-routeintro h3,\n #rio-chat .rio-active-copy h3 {font-size:28px;}\n}\n\n/* Claude-referentie: rustiger routecanvas */\n#rio-chat .rio-resultaat.rio-routepage {\n background: #f7f1f1;\n color: #201a35;\n box-shadow: 0 24px 64px rgba(53, 39, 131, .14);\n}\n#rio-chat .rio-routeintro {\n padding: 30px 56px 18px;\n background: #f7f1f1;\n color: #201a35;\n text-align: left;\n}\n#rio-chat .rio-route-topbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 18px;\n max-width: 1160px;\n margin: 0 auto 30px;\n}\n#rio-chat .rio-route-brand {\n color: var(--rio-paars-donker);\n font-size: 14px;\n font-weight: 800;\n}\n#rio-chat .rio-routeintro-inner {\n max-width: 1160px;\n margin: 0 auto;\n}\n#rio-chat .rio-routeintro .rio-routeeyebrow {\n color: #7562c9;\n}\n#rio-chat .rio-routeintro h3 {\n max-width: 820px;\n margin: 0 0 14px;\n color: #201a35;\n font-size: 48px;\n line-height: 1.08;\n}\n#rio-chat .rio-routefocus {\n max-width: 790px;\n margin: 0;\n color: #5f5870;\n font-size: 18px;\n line-height: 1.62;\n}\n#rio-chat .rio-resultaat .rio-route-button-compact {\n width: auto;\n flex: 0 0 auto;\n min-height: 38px;\n padding: 9px 15px;\n font-size: 13px;\n box-shadow: none;\n}\n#rio-chat .rio-routesticky {\n top: 10px;\n padding: 14px 48px 26px;\n background: rgba(247, 241, 241, .94);\n backdrop-filter: blur(10px);\n}\n#rio-chat .rio-routesticky .rio-stepnav {\n position: relative;\n gap: 20px;\n max-width: 1160px;\n padding: 4px 0 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n}\n#rio-chat .rio-routesticky .rio-stepnav::before {\n content: \"\";\n position: absolute;\n top: 28px;\n left: 28px;\n right: 28px;\n height: 3px;\n border-radius: 999px;\n background: #cec6f8;\n}\n#rio-chat .rio-routesticky .rio-stepnav::after {\n content: \"\";\n position: absolute;\n top: 28px;\n left: 28px;\n width: var(--rio-route-progress, 10%);\n max-width: calc(100% - 56px);\n height: 3px;\n border-radius: 999px;\n background: var(--rio-oranje);\n transition: width .22s ease;\n}\n#rio-chat .rio-routesticky .rio-stepnav-item {\n flex: 1 0 180px;\n}\n#rio-chat .rio-stepnav-button {\n position: relative;\n z-index: 1;\n display: grid;\n grid-template-columns: 1fr;\n justify-items: center;\n gap: 8px;\n min-height: 112px;\n padding: 0 4px;\n border-radius: 14px;\n background: transparent;\n text-align: center;\n}\n#rio-chat .rio-stepnav-button:hover {\n background: rgba(206, 198, 248, .22);\n}\n#rio-chat .rio-stepnav-button[aria-current=\"step\"] {\n background: transparent;\n box-shadow: none;\n transform: none;\n}\n#rio-chat .rio-stepnav-button .rio-stepnav-dot {\n width: 54px;\n height: 54px;\n border-color: #cec6f8;\n background: #f7f1f1;\n color: var(--rio-paars-donker);\n}\n#rio-chat .rio-stepnav-button[aria-current=\"step\"] .rio-stepnav-dot {\n background: var(--rio-oranje);\n color: #fff;\n transform: scale(1.16);\n box-shadow: 0 0 0 10px rgba(242, 140, 0, .18);\n}\n#rio-chat .rio-stepnav-button .rio-stepnav-label {\n color: #8d7bd7;\n font-size: 12px;\n}\n#rio-chat .rio-stepnav-button .rio-stepnav-title {\n color: #665d7c;\n font-size: 15px;\n}\n#rio-chat .rio-routesticky .rio-stepnav-item:not(.rio-stepnav-active) .rio-stepnav-label {\n color: #8d7bd7;\n}\n#rio-chat .rio-routesticky .rio-stepnav-item:not(.rio-stepnav-active) .rio-stepnav-title {\n color: #665d7c;\n}\n#rio-chat .rio-stepnav-button[aria-current=\"step\"] .rio-stepnav-label {\n color: var(--rio-oranje);\n}\n#rio-chat .rio-stepnav-button[aria-current=\"step\"] .rio-stepnav-title {\n color: #201a35;\n}\n#rio-chat .rio-active-advice {\n box-shadow: 0 28px 64px rgba(53, 39, 131, .16);\n}\n#rio-chat .rio-stage-heading h3,\n#rio-chat .rio-addon h3,\n#rio-chat .rio-static-card h3 {\n letter-spacing: 0;\n}\n#rio-chat .rio-addon,\n#rio-chat .rio-static-card {\n box-shadow: none;\n}\n#rio-chat .rio-addon {\n background: rgba(206, 198, 248, .22);\n}\n#rio-chat .rio-addon .rio-weekgrid {\n gap: 0;\n}\n#rio-chat .rio-addon .rio-weekcard {\n padding: 18px 18px 18px 0;\n border: 0;\n border-top: 1px solid rgba(132, 118, 214, .28);\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n}\n#rio-chat .rio-notification {\n background: #f3efff;\n box-shadow: none;\n}\n#rio-chat .rio-compare-card {\n box-shadow: none;\n}\n#rio-chat .rio-static-card {\n background: #fff;\n}\n#rio-chat .rio-static-grid span {\n background: #f7f1f1;\n}\n#rio-chat .rio-offer {\n padding: 38px 34px;\n border: 0;\n background: var(--rio-paars-donker);\n color: #fff;\n}\n#rio-chat .rio-offer h3,\n#rio-chat .rio-offer h4,\n#rio-chat .rio-offer p {\n color: #fff;\n}\n#rio-chat .rio-offer h4 {\n color: #f6cb96;\n}\n#rio-chat .rio-offer-price {\n margin: 18px auto 8px;\n color: #fff;\n font-size: 46px;\n line-height: 1;\n font-weight: 800;\n}\n#rio-chat .rio-offer-note {\n color: #e8e0ff;\n font-size: 14px;\n}\n#rio-chat .rio-payments {\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n gap: 8px;\n margin-top: 18px;\n}\n#rio-chat .rio-payments span {\n padding: 7px 10px;\n border-radius: 999px;\n background: rgba(255, 255, 255, .12);\n color: #fff;\n font-size: 12px;\n font-weight: 800;\n}\n@media(max-width:767px){\n #rio-chat .rio-routeintro {\n padding: 24px 18px 16px;\n }\n #rio-chat .rio-route-topbar {\n margin-bottom: 24px;\n }\n #rio-chat .rio-routeintro h3 {\n font-size: 34px;\n }\n #rio-chat .rio-routefocus {\n font-size: 16px;\n }\n #rio-chat .rio-routesticky {\n padding: 10px 10px 18px;\n }\n #rio-chat .rio-routesticky .rio-stepnav {\n gap: 16px;\n }\n #rio-chat .rio-routesticky .rio-stepnav::before {\n left: 27px;\n right: 27px;\n }\n #rio-chat .rio-routesticky .rio-stepnav-item {\n flex-basis: 128px;\n }\n #rio-chat .rio-stepnav-button {\n min-height: 106px;\n }\n #rio-chat .rio-stepnav-button .rio-stepnav-title {\n font-size: 13px;\n }\n #rio-chat .rio-offer-price {\n font-size: 40px;\n }\n}\n\n/* Houd de routepopup strak binnen kleine schermen; alleen de stappenstrip mag horizontaal scrollen. */\n#rio-chat .rio-routepop {\n overflow-x: hidden;\n}\n#rio-chat .rio-routepop-shell,\n#rio-chat .rio-resultaat.rio-routepage,\n#rio-chat .rio-routeintro,\n#rio-chat .rio-routeintro-inner,\n#rio-chat .rio-routesticky,\n#rio-chat .rio-stage-panel,\n#rio-chat .rio-route-static,\n#rio-chat .rio-active-advice,\n#rio-chat .rio-addon,\n#rio-chat .rio-static-card {\n min-width: 0;\n max-width: 100%;\n}\n#rio-chat .rio-route-topbar {\n flex-wrap: wrap;\n}\n#rio-chat .rio-route-brand {\n min-width: 0;\n}\n#rio-chat .rio-routesticky .rio-stepnav {\n width: 100%;\n min-width: 0;\n}\n@media(max-width:767px){\n #rio-chat .rio-routepop-shell {\n width: 100%;\n }\n #rio-chat .rio-routesticky .rio-stepnav {\n max-width: 100%;\n overflow-x: auto;\n overflow-y: hidden;\n }\n #rio-chat .rio-routesticky .rio-stepnav-item {\n flex: 0 0 128px;\n }\n}\n\n/* Exacte Claude-routepagina */\n#rio-chat .rio-routepop {\n padding: 0;\n overflow-x: hidden;\n background: rgba(20, 16, 43, .78);\n backdrop-filter: none;\n}\n#rio-chat .rio-routepop-shell {\n position: relative;\n width: min(1280px, 100%);\n padding-top: 0;\n}\n#rio-chat .rio-routepop-close {\n display: none !important;\n}\n#rio-chat .rio-routepop-close {\n position: fixed;\n top: 18px;\n right: 22px;\n z-index: 20;\n width: 44px;\n height: 44px;\n margin: 0;\n border-radius: 50%;\n background: #fff;\n color: #352783;\n box-shadow: 0 18px 36px rgba(20, 16, 43, .26);\n}\n#rio-chat .rio-routepop .rio-resultaat {\n margin: 0 auto;\n}\n#rio-chat .rio-resultaat.rio-routepage {\n width: min(1280px, 100%);\n overflow: hidden;\n border-radius: 0;\n background: #fff;\n color: #14102b;\n box-shadow: none;\n}\n#rio-chat .rio-route-headbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 14px;\n height: 65px;\n min-height: 65px;\n padding: 14px 56px;\n background: #352783;\n color: #fff;\n}\n#rio-chat .rio-route-brand {\n display: inline-flex;\n align-items: center;\n gap: 14px;\n min-width: 0;\n color: #fff;\n font-size: 15px;\n line-height: 1.35;\n}\n#rio-chat .rio-route-brand::before {\n content: \"\";\n flex: 0 0 22px;\n width: 22px;\n height: 22px;\n border-radius: 7px;\n background: linear-gradient(135deg, #cec6f8, #8476d6);\n}\n#rio-chat .rio-route-brand-main {\n font-weight: 800;\n}\n#rio-chat .rio-route-brand-sub {\n color: rgba(255, 255, 255, .55);\n font-weight: 500;\n}\n#rio-chat .rio-resultaat .rio-route-button,\n#rio-chat .rio-resultaat .rio-route-button:visited {\n min-height: 37px;\n padding: 9px 18px;\n border-radius: 999px;\n background: #f28c00;\n color: #fff;\n font-size: 14px;\n font-weight: 800;\n line-height: 1.25;\n box-shadow: none;\n}\n#rio-chat .rio-resultaat .rio-route-button:hover {\n background: #dc7f00;\n box-shadow: none;\n}\n#rio-chat .rio-resultaat .rio-route-button-soft,\n#rio-chat .rio-resultaat .rio-route-button-soft:visited {\n background: #fff;\n color: #352783;\n}\n#rio-chat .rio-routeintro {\n min-height: 487px;\n padding: 64px 56px 0;\n background: #f4f2fc;\n color: #14102b;\n text-align: left;\n}\n#rio-chat .rio-routeintro-inner {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 30px;\n max-width: 1168px;\n margin: 0 auto;\n}\n#rio-chat .rio-route-title,\n#rio-chat .rio-routeintro h1 {\n max-width: 560px;\n margin: 0;\n color: #14102b;\n font-size: 56px;\n line-height: 1.04;\n font-weight: 800;\n letter-spacing: 0;\n}\n#rio-chat .rio-route-name {\n color: #8476d6;\n}\n#rio-chat .rio-routefocus {\n max-width: 630px;\n margin: 0;\n color: #575173;\n font-size: 19px;\n line-height: 1.5;\n}\n#rio-chat .rio-routesticky {\n position: static;\n z-index: 1;\n max-width: 1168px;\n margin: 46px auto 0;\n padding: 0 0 34px;\n background: transparent;\n backdrop-filter: none;\n}\n#rio-chat .rio-mobile-stepnav-controls {\n display: none;\n}\n#rio-chat .rio-routesticky .rio-stepnav {\n position: relative;\n display: grid;\n grid-template-columns: repeat(4, 200px);\n justify-content: space-between;\n gap: 0;\n width: 100%;\n max-width: 1168px;\n height: 150px;\n margin: 0;\n padding: 0;\n overflow: visible;\n list-style: none;\n border: 0;\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n}\n#rio-chat .rio-routesticky .rio-stepnav::before,\n#rio-chat .rio-routesticky .rio-stepnav::after {\n content: \"\";\n position: absolute;\n inset: 0;\n pointer-events: none;\n background-repeat: no-repeat;\n background-position: center 20px;\n background-size: calc(100% - 128px) 96px;\n}\n#rio-chat .rio-routesticky .rio-stepnav::before {\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 1040 96' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 50 C180 34 265 24 392 47 S660 70 792 46 S965 28 1040 44' fill='none' stroke='%23cec6f8' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E\");\n}\n#rio-chat .rio-routesticky .rio-stepnav::after {\n width: var(--rio-route-progress, 10%);\n max-width: 100%;\n background-image: url(\"data:image/svg+xml,%3Csvg viewBox='0 0 1040 96' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 50 C180 34 265 24 392 47 S660 70 792 46 S965 28 1040 44' fill='none' stroke='%23f28c00' stroke-width='4' stroke-linecap='round'/%3E%3C/svg%3E\");\n overflow: hidden;\n}\n#rio-chat .rio-routesticky .rio-stepnav-item {\n display: block;\n width: 200px;\n min-width: 0;\n flex: none;\n scroll-snap-align: start;\n text-align: center;\n}\n#rio-chat .rio-routesticky .rio-stepnav-item:nth-child(1) { margin-top: 26px; }\n#rio-chat .rio-routesticky .rio-stepnav-item:nth-child(2) { margin-top: 0; }\n#rio-chat .rio-routesticky .rio-stepnav-item:nth-child(3) { margin-top: 22px; }\n#rio-chat .rio-routesticky .rio-stepnav-item:nth-child(4) { margin-top: -2px; }\n#rio-chat .rio-stepnav-button {\n display: grid;\n grid-template-columns: 1fr;\n justify-items: center;\n gap: 0;\n width: 100%;\n min-height: 110px;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: #14102b;\n text-align: center;\n}\n#rio-chat .rio-stepnav-button:hover {\n background: transparent;\n}\n#rio-chat .rio-stepnav-button:focus-visible {\n outline: 3px solid #f28c00;\n outline-offset: 8px;\n border-radius: 14px;\n}\n#rio-chat .rio-stepnav-button[aria-current=\"step\"] {\n background: transparent;\n box-shadow: none;\n transform: none;\n}\n#rio-chat .rio-stepnav-button .rio-stepnav-dot {\n position: relative;\n z-index: 2;\n width: 56px;\n height: 56px;\n margin: 0 auto;\n border: 2px solid #cec6f8;\n border-radius: 50%;\n display: grid;\n place-items: center;\n background: #fff;\n color: #14102b;\n font-size: 18px;\n font-weight: 800;\n box-shadow: none;\n}\n#rio-chat .rio-stepnav-button[aria-current=\"step\"] .rio-stepnav-dot {\n border-color: transparent;\n background: #f28c00;\n color: #fff;\n transform: none;\n box-shadow: 0 0 0 8px rgba(242, 140, 0, .16);\n}\n#rio-chat .rio-stepnav-text {\n display: block;\n min-width: 0;\n}\n#rio-chat .rio-stepnav-button .rio-stepnav-label,\n#rio-chat .rio-routesticky .rio-stepnav-item:not(.rio-stepnav-active) .rio-stepnav-label {\n display: block;\n margin-top: 12px;\n color: #575173;\n font-size: 15px;\n font-weight: 800;\n line-height: 1.35;\n text-transform: none;\n}\n#rio-chat .rio-stepnav-button[aria-current=\"step\"] .rio-stepnav-label {\n color: #f28c00;\n}\n#rio-chat .rio-stepnav-button .rio-stepnav-title,\n#rio-chat .rio-routesticky .rio-stepnav-item:not(.rio-stepnav-active) .rio-stepnav-title {\n display: block;\n max-width: 200px;\n margin-top: 2px;\n color: #8c86a6;\n font-size: 14px;\n font-weight: 500;\n line-height: 1.35;\n text-overflow: clip;\n}\n#rio-chat .rio-stepnav-button[aria-current=\"step\"] .rio-stepnav-title {\n color: #575173;\n}\n#rio-chat .rio-stage-panel {\n max-width: none;\n margin: 0;\n padding: 56px 56px 0;\n background: #fff;\n}\n#rio-chat .rio-stage-heading {\n max-width: 1168px;\n margin: 0 auto 30px;\n}\n#rio-chat .rio-stage-heading h3 {\n margin: 0;\n color: #14102b;\n font-size: 34px;\n line-height: 1.16;\n}\n#rio-chat .rio-stage-heading p {\n max-width: 620px;\n margin-top: 12px;\n color: #575173;\n font-size: 17px;\n line-height: 1.55;\n}\n#rio-chat .rio-active-advice {\n display: block;\n max-width: 1168px;\n margin: 0 auto 64px;\n padding: 48px 56px;\n overflow: visible;\n border-radius: 26px;\n background: #fff;\n box-shadow: 0 2px 6px rgba(28, 19, 72, .06), 0 40px 70px -34px rgba(28, 19, 72, .42);\n}\n#rio-chat .rio-active-visual {\n min-height: 353px;\n padding: 34px;\n border-radius: 20px;\n background: #eeeaff;\n}\n#rio-chat .rio-miniapp {\n width: 268px;\n border-radius: 18px;\n box-shadow: 0 18px 40px -20px rgba(28, 19, 72, .55);\n}\n#rio-chat .rio-miniapp-head {\n padding: 13px 16px;\n background: #352783;\n}\n#rio-chat .rio-miniapp-head strong {\n font-size: 13px;\n}\n#rio-chat .rio-miniapp-head span {\n color: rgba(255, 255, 255, .62);\n font-size: 11px;\n}\n#rio-chat .rio-miniapp-days {\n gap: 5px;\n padding: 14px 16px 0;\n}\n#rio-chat .rio-miniapp-day {\n height: 29px;\n border-radius: 7px;\n background: #f4f2fc;\n color: #8c86a6;\n font-size: 11px;\n}\n#rio-chat .rio-miniapp-active {\n background: #8476d6;\n color: #fff;\n}\n#rio-chat .rio-miniapp-lessons {\n gap: 9px;\n padding: 9px 16px 14px;\n}\n#rio-chat .rio-miniapp-row {\n min-height: 37px;\n grid-template-columns: 22px minmax(0,1fr);\n gap: 9px;\n padding: 8px 11px;\n border-radius: 10px;\n background: #f4f2fc;\n color: #575173;\n}\n#rio-chat .rio-miniapp-row-active {\n background: #cec6f8;\n color: #352783;\n}\n#rio-chat .rio-miniapp-row span {\n width: 22px;\n height: 22px;\n font-size: 11px;\n}\n#rio-chat .rio-miniapp-row p {\n font-size: 12px;\n font-weight: 800;\n}\n#rio-chat .rio-miniapp-progress {\n height: 5px;\n margin: 0 16px 11px;\n background: #e7e3f4;\n}\n#rio-chat .rio-miniapp-progress span {\n background: #8476d6;\n}\n#rio-chat .rio-miniapp-note {\n padding: 0 16px 18px;\n color: #8c86a6;\n font-size: 11px;\n}\n#rio-chat .rio-active-copy {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n max-width: 780px;\n padding: 0;\n}\n#rio-chat .rio-mainlabel {\n display: inline-block;\n margin: 0;\n padding: 6px 12px;\n border-radius: 7px;\n background: #f28c00;\n color: #fff;\n font-size: 12px;\n font-weight: 800;\n line-height: 1.35;\n text-transform: none;\n}\n#rio-chat .rio-active-copy h3 {\n margin: 18px 0 18px;\n color: #14102b;\n font-size: 34px;\n line-height: 1.14;\n}\n#rio-chat .rio-productmeta {\n margin: 0;\n color: #8c86a6;\n font-size: 15px;\n line-height: 1.5;\n}\n#rio-chat .rio-mainintro {\n margin: 20px 0 0;\n padding-top: 0;\n color: #575173;\n font-size: 16.5px;\n line-height: 1.55;\n}\n#rio-chat .rio-gainsblock {\n margin-top: 22px;\n}\n#rio-chat .rio-change-list {\n gap: 10px;\n color: #14102b;\n font-size: 15.5px;\n line-height: 1.45;\n}\n#rio-chat .rio-change-list li {\n padding-left: 26px;\n}\n#rio-chat .rio-change-list li::before {\n top: .16em;\n width: 14px;\n height: 14px;\n background: #b9e8bb;\n}\n#rio-chat .rio-todaybox {\n display: block;\n margin-top: 22px;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: #14102b;\n font-size: 17px;\n line-height: 1.5;\n}\n#rio-chat .rio-todaybox strong {\n display: block;\n margin-bottom: 6px;\n color: #c66f00;\n font-size: 12px;\n font-weight: 800;\n text-transform: uppercase;\n}\n#rio-chat .rio-todaybox span {\n display: block;\n}\n#rio-chat .rio-todaybox .rio-route-button {\n display: none;\n}\n#rio-chat .rio-weeksteps {\n max-width: 1168px;\n margin: 0 auto;\n padding: 0;\n}\n#rio-chat .rio-weeksteps h3,\n#rio-chat .rio-reminderpanel h3,\n#rio-chat .rio-reflection h3 {\n margin: 0;\n color: #14102b;\n font-size: 26px;\n line-height: 1.36;\n font-weight: 800;\n}\n#rio-chat .rio-weekgrid {\n display: flex;\n flex-direction: column;\n gap: 0;\n margin-top: 26px;\n}\n#rio-chat .rio-weekcard {\n display: grid;\n grid-template-columns: 52px minmax(0,1fr);\n gap: 26px;\n min-height: 96px;\n padding: 22px 0;\n border: 0;\n border-top: 1px solid #e7e3f4;\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n}\n#rio-chat .rio-weekcard:last-child {\n border-bottom: 1px solid #e7e3f4;\n}\n#rio-chat .rio-weeknr {\n width: 52px;\n height: auto;\n margin: 0;\n border-radius: 0;\n background: transparent;\n color: #cec6f8;\n font-size: 34px;\n font-weight: 300;\n line-height: 1;\n}\n#rio-chat .rio-weekcard h4 {\n margin: 0;\n color: #14102b;\n font-size: 18px;\n line-height: 1.35;\n}\n#rio-chat .rio-weekcard p {\n grid-column: 2;\n margin: 4px 0 0;\n color: #575173;\n font-size: 16.5px;\n line-height: 1.45;\n}\n#rio-chat .rio-practical {\n display: grid;\n grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);\n gap: 56px;\n max-width: none;\n margin: 64px -56px 0;\n padding: 56px;\n background: #f4f2fc;\n}\n#rio-chat .rio-reminderpanel,\n#rio-chat .rio-reflection {\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n}\n#rio-chat .rio-reminderpanel > p,\n#rio-chat .rio-reflection > p {\n margin: 10px 0 0;\n color: #575173;\n font-size: 16.5px;\n line-height: 1.55;\n}\n#rio-chat .rio-notification {\n display: grid;\n grid-template-columns: 48px minmax(0,1fr);\n gap: 14px;\n min-height: 73px;\n margin-top: 12px;\n padding: 15px 17px;\n border-radius: 14px;\n background: #fff;\n box-shadow: none;\n}\n#rio-chat .rio-reminderpanel .rio-notification:first-of-type {\n margin-top: 26px;\n}\n#rio-chat .rio-notification-time {\n color: #f28c00;\n font-size: 14px;\n font-weight: 800;\n line-height: 1.35;\n}\n#rio-chat .rio-notification p {\n margin: 0;\n color: #575173;\n font-size: 15px;\n line-height: 1.42;\n}\n#rio-chat .rio-notification strong {\n display: block;\n margin-bottom: 2px;\n color: #14102b;\n font-size: 15px;\n line-height: 1.35;\n}\n#rio-chat .rio-reflection {\n align-self: start;\n padding: 34px;\n border-radius: 22px;\n background: #fff;\n}\n#rio-chat .rio-reflectionform {\n display: grid;\n gap: 10px;\n margin-top: 24px;\n padding: 0;\n border-radius: 0;\n background: transparent;\n}\n#rio-chat .rio-reflectionform label {\n color: #14102b;\n font-size: 15px;\n font-weight: 800;\n}\n#rio-chat .rio-rating {\n grid-template-columns: repeat(5, minmax(0,1fr));\n gap: 10px;\n margin: 0 0 12px;\n}\n#rio-chat .rio-rating button {\n min-height: 50px;\n border: 1px solid #e7e3f4;\n border-radius: 11px;\n background: transparent;\n color: #575173;\n font-size: 16px;\n}\n#rio-chat .rio-rating button[aria-pressed=\"true\"] {\n border-color: #8476d6;\n background: #8476d6;\n color: #fff;\n}\n#rio-chat .rio-reflection textarea {\n min-height: 104px;\n padding: 14px 15px;\n border: 1px solid #e7e3f4;\n border-radius: 12px;\n background: transparent;\n color: #575173;\n font-size: 15px;\n}\n#rio-chat .rio-choice-grid,\n#rio-chat .rio-support-grid {\n max-width: 1168px;\n margin: 0 auto;\n}\n#rio-chat .rio-compare-card {\n padding: 28px;\n border: 0;\n border-radius: 22px;\n background: #f4f2fc;\n box-shadow: none;\n}\n#rio-chat .rio-compare-card h4 {\n color: #14102b;\n font-size: 24px;\n}\n#rio-chat .rio-compare-card p {\n color: #575173;\n font-size: 16px;\n}\n#rio-chat .rio-growth-panel {\n max-width: 1168px;\n margin: 40px auto 0;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n}\n#rio-chat .rio-route-static {\n max-width: none;\n margin: 0;\n padding: 64px 56px;\n gap: 32px;\n background: #f4f2fc;\n}\n#rio-chat .rio-static-card {\n max-width: 1168px;\n width: 100%;\n margin: 0 auto;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n box-shadow: none;\n}\n#rio-chat .rio-static-card h4 {\n margin: 0 0 10px;\n color: #f28c00;\n font-size: 13px;\n font-weight: 800;\n text-transform: none;\n}\n#rio-chat .rio-static-card h3 {\n margin: 0 0 12px;\n color: #14102b;\n font-size: 34px;\n line-height: 1.18;\n}\n#rio-chat .rio-static-card p {\n color: #575173;\n font-size: 17px;\n line-height: 1.55;\n}\n#rio-chat .rio-static-grid {\n grid-template-columns: repeat(2, minmax(0,1fr));\n gap: 0;\n margin-top: 28px;\n}\n#rio-chat .rio-static-grid span {\n min-height: 0;\n padding: 18px 0;\n border-top: 1px solid #e7e3f4;\n border-radius: 0;\n background: transparent;\n color: #14102b;\n font-size: 16px;\n}\n#rio-chat .rio-ai-inline {\n margin-top: 28px;\n padding: 22px 0 0;\n border-top: 1px solid #e7e3f4;\n border-radius: 0;\n background: transparent;\n color: #14102b;\n}\n#rio-chat .rio-ai-inline h3,\n#rio-chat .rio-ai-inline p {\n color: #14102b;\n}\n#rio-chat .rio-ai-inline .rio-sectionlabel {\n color: #f28c00;\n}\n#rio-chat .rio-offer {\n max-width: 1168px;\n padding: 44px 48px;\n border-radius: 26px;\n background: #352783;\n color: #fff;\n text-align: left;\n}\n#rio-chat .rio-offer h3,\n#rio-chat .rio-offer h4,\n#rio-chat .rio-offer p {\n color: #fff;\n}\n#rio-chat .rio-offer h4 {\n color: #f6cb96;\n}\n#rio-chat .rio-offer .rio-route-actions {\n justify-content: flex-start;\n}\n#rio-chat .rio-offer-price {\n margin: 22px 0 8px;\n font-size: 64px;\n}\n#rio-chat .rio-payments {\n justify-content: flex-start;\n}\n#rio-chat .rio-faq details {\n border-top: 1px solid #e7e3f4;\n}\n#rio-chat .rio-faq summary {\n color: #14102b;\n font-size: 18px;\n}\n@media(max-width:1100px){\n #rio-chat .rio-route-headbar,\n #rio-chat .rio-routeintro,\n #rio-chat .rio-stage-panel,\n #rio-chat .rio-route-static {\n padding-left: 32px;\n padding-right: 32px;\n }\n #rio-chat .rio-active-advice {\n grid-template-columns: minmax(280px, .44fr) minmax(0, .56fr);\n gap: 34px;\n margin-left: 0;\n margin-right: 0;\n }\n #rio-chat .rio-practical {\n margin-left: -32px;\n margin-right: -32px;\n padding-left: 32px;\n padding-right: 32px;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepop {\n padding: 0;\n }\n #rio-chat .rio-routepop-close {\n top: 18px;\n right: 12px;\n }\n #rio-chat .rio-routepage {\n border-radius: 0;\n }\n #rio-chat .rio-route-headbar {\n height: 65px;\n min-height: 65px;\n padding: 14px 76px 14px 28px;\n }\n #rio-chat .rio-route-brand {\n gap: 0;\n font-size: 14px;\n }\n #rio-chat .rio-route-brand::before,\n #rio-chat .rio-route-brand-sub {\n display: none;\n }\n #rio-chat .rio-resultaat .rio-route-button-compact {\n width: auto;\n min-width: 72px;\n min-height: 36px;\n padding: 8px 14px;\n font-size: 0;\n }\n #rio-chat .rio-resultaat .rio-route-button-compact::before {\n content: \"Start\";\n font-size: 13px;\n }\n #rio-chat .rio-routeintro {\n min-height: 0;\n padding: 48px 28px 0;\n }\n #rio-chat .rio-route-title,\n #rio-chat .rio-routeintro h1 {\n max-width: 330px;\n font-size: 34px;\n line-height: 1.08;\n }\n #rio-chat .rio-routefocus {\n max-width: 330px;\n margin: 0;\n font-size: 15px;\n line-height: 1.55;\n }\n #rio-chat .rio-routesticky {\n width: 100%;\n margin: 34px 0 0;\n padding: 0 0 24px;\n overflow-x: visible;\n overflow-y: hidden;\n }\n #rio-chat .rio-routesticky .rio-stepnav {\n display: block;\n width: 100%;\n max-width: none;\n height: auto;\n min-height: 132px;\n overflow: hidden;\n }\n #rio-chat .rio-routesticky .rio-stepnav::before,\n #rio-chat .rio-routesticky .rio-stepnav::after {\n display: none;\n }\n #rio-chat .rio-routesticky .rio-stepnav-item {\n display: none;\n width: 100%;\n margin: 0 !important;\n }\n #rio-chat .rio-routesticky .rio-stepnav-item.rio-stepnav-active {\n display: block;\n }\n #rio-chat .rio-stepnav-button {\n min-height: 132px;\n padding: 0 36px;\n }\n #rio-chat .rio-stepnav-button .rio-stepnav-dot {\n width: 64px;\n height: 64px;\n font-size: 21px;\n }\n #rio-chat .rio-stepnav-button .rio-stepnav-label {\n margin-top: 12px;\n font-size: 15px;\n }\n #rio-chat .rio-stepnav-button .rio-stepnav-title {\n max-width: 250px;\n margin: 4px auto 0;\n font-size: 15px;\n font-weight: 800;\n }\n #rio-chat .rio-mobile-stepnav-controls {\n display: grid;\n grid-template-columns: 88px minmax(0,1fr) 88px;\n align-items: center;\n gap: 10px;\n margin: 8px 0 0;\n }\n #rio-chat .rio-mobile-stepnav-arrow {\n min-height: 40px;\n padding: 0 13px;\n border: 1px solid #cec6f8;\n border-radius: 999px;\n background: #fff;\n color: #352783;\n font-size: 13px;\n font-weight: 800;\n line-height: 1;\n box-shadow: 0 10px 22px rgba(53, 39, 131, .1);\n }\n #rio-chat .rio-mobile-stepnav-arrow:disabled {\n opacity: .42;\n cursor: default;\n }\n #rio-chat .rio-mobile-stepnav-arrow:not(:disabled):hover,\n #rio-chat .rio-mobile-stepnav-arrow:not(:disabled):focus-visible {\n border-color: #f28c00;\n outline: 3px solid rgba(242, 140, 0, .22);\n outline-offset: 2px;\n }\n #rio-chat .rio-mobile-stepnav-count {\n color: #8c86a6;\n font-size: 12px;\n font-weight: 800;\n line-height: 1.3;\n text-align: center;\n }\n #rio-chat .rio-stage-panel {\n margin: 0;\n padding: 34px 22px 0;\n }\n #rio-chat .rio-active-advice {\n display: block;\n margin: 0 0 42px;\n padding: 26px 20px;\n border-radius: 24px;\n }\n #rio-chat .rio-active-visual {\n min-height: 0;\n padding: 26px 14px;\n margin-bottom: 28px;\n }\n #rio-chat .rio-miniapp {\n width: min(268px, 100%);\n }\n #rio-chat .rio-active-copy h3 {\n font-size: 29px;\n margin: 20px 0 20px;\n line-height: 1.18;\n }\n #rio-chat .rio-productmeta {\n margin: 0;\n }\n #rio-chat .rio-mainintro {\n margin-top: 0;\n padding-top: 18px;\n font-size: 15px;\n line-height: 1.62;\n }\n #rio-chat .rio-change-list {\n font-size: 15px;\n }\n #rio-chat .rio-todaybox {\n padding-bottom: 0;\n }\n #rio-chat .rio-todaybox .rio-route-button {\n display: inline-flex;\n position: static;\n width: 100%;\n margin-top: 16px;\n min-height: 52px;\n box-shadow: 0 18px 34px rgba(242, 140, 0, .28);\n }\n #rio-chat .rio-weeksteps {\n margin-bottom: 0;\n }\n #rio-chat .rio-weeksteps h3,\n #rio-chat .rio-reminderpanel h3,\n #rio-chat .rio-reflection h3 {\n font-size: 24px;\n }\n #rio-chat .rio-weekcard {\n grid-template-columns: 42px minmax(0,1fr);\n gap: 18px;\n min-height: 0;\n }\n #rio-chat .rio-weeknr {\n width: 42px;\n font-size: 28px;\n }\n #rio-chat .rio-weekcard p {\n margin-top: 4px;\n font-size: 15px;\n }\n #rio-chat .rio-practical {\n grid-template-columns: 1fr;\n gap: 34px;\n margin: 42px -22px 0;\n padding: 36px 22px;\n }\n #rio-chat .rio-reflection {\n padding: 26px 22px;\n }\n #rio-chat .rio-rating {\n gap: 8px;\n }\n #rio-chat .rio-rating button {\n min-height: 44px;\n }\n #rio-chat .rio-stage-heading h3 {\n font-size: 28px;\n }\n #rio-chat .rio-choice-grid,\n #rio-chat .rio-support-grid {\n grid-template-columns: 1fr;\n }\n #rio-chat .rio-route-static {\n padding: 42px 22px 92px;\n }\n #rio-chat .rio-static-card h3 {\n font-size: 28px;\n }\n #rio-chat .rio-static-grid {\n grid-template-columns: 1fr;\n }\n #rio-chat .rio-offer {\n padding: 30px 24px;\n }\n #rio-chat .rio-offer-price {\n font-size: 48px;\n }\n}\n#rio-chat .rio-routepage-v2 {\n --rio-ink:#14102b;\n --rio-muted:#575173;\n --rio-soft:#f4f2fc;\n --rio-soft-2:#eeeaff;\n --rio-line:#d7d0f5;\n --rio-purple:#352783;\n --rio-purple-2:#8476d6;\n --rio-orange:#f28c00;\n --rio-green:#b9e8bb;\n --rio-teal:#159879;\n --rio-mint:#dff8ef;\n --rio-blue:#2360e6;\n --rio-pink:#e94aa9;\n --rio-coral:#ef7b45;\n --rio-yellow:#f5b400;\n --rio-lilac:#d9c9ff;\n --rio-shadow:0 34px 78px -44px rgba(28, 19, 72, .52);\n color:var(--rio-ink);\n background:#fff;\n font-family:\"Open Sans\", Arial, sans-serif;\n padding-bottom:24px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-headbar {\n position:sticky;\n top:0;\n z-index:6;\n height:74px;\n padding:18px 56px;\n border-bottom:1px solid rgba(215,208,245,.72);\n background:rgba(255,255,255,.94);\n backdrop-filter:blur(16px);\n}\n#rio-chat .rio-routepage-v2 .rio-route-brand {\n gap:10px;\n color:var(--rio-purple);\n}\n#rio-chat .rio-routepage-v2 .rio-route-brand::before {\n content:none;\n display:none;\n}\n#rio-chat .rio-route-logo {\n display:block;\n flex:0 0 auto;\n width:42px;\n height:42px;\n border-radius:12px;\n box-shadow:0 10px 24px -18px rgba(28,19,72,.55);\n}\n#rio-chat .rio-route-brand-copy {\n display:grid;\n min-width:0;\n line-height:1.2;\n}\n#rio-chat .rio-routepage-v2 .rio-route-brand-sub {\n color:#8c86a6;\n}\n#rio-chat .rio-routepage-v2 .rio-routeintro {\n padding:62px 56px 32px;\n background:linear-gradient(180deg,#fff 0%,#faf8ff 100%);\n}\n#rio-chat .rio-routepage-v2 .rio-routeintro-inner {\n display:grid;\n grid-template-columns:minmax(0,1fr) minmax(280px,360px);\n align-items:center;\n gap:44px;\n max-width:1168px;\n margin:0 auto;\n}\n#rio-chat .rio-routepage-v2 .rio-routeintro-copy {\n display:grid;\n gap:18px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-title {\n max-width:760px;\n margin:0 0 8px;\n font-size:50px;\n line-height:1.08;\n}\n#rio-chat .rio-routepage-v2 .rio-routefocus,\n#rio-chat .rio-routepage-v2 .rio-route-recognition {\n max-width:760px;\n margin:0;\n color:var(--rio-muted);\n font-size:18px;\n line-height:1.65;\n}\n#rio-chat .rio-routepage-v2 .rio-route-recognition {\n margin-top:2px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-support {\n max-width:760px;\n margin:2px 0 0;\n padding:16px 18px;\n border-left:6px solid var(--rio-oranje);\n border-radius:18px;\n background:#fff7eb;\n color:var(--rio-paars-donker);\n font-size:16.5px;\n line-height:1.65;\n}\n#rio-chat .rio-routepage-v2 .rio-route-title::after {\n content:\"\";\n display:block;\n width:118px;\n height:6px;\n margin-top:22px;\n border-radius:999px;\n background:linear-gradient(90deg,var(--rio-orange),var(--rio-pink),var(--rio-teal));\n}\n#rio-chat .rio-routepage-v2 .rio-route-heroimage {\n position:relative;\n min-height:300px;\n margin:0;\n overflow:hidden;\n border:10px solid #fff;\n border-radius:26px;\n background:#fff;\n box-shadow:0 28px 70px -38px rgba(28,19,72,.54);\n}\n#rio-chat .rio-routepage-v2 .rio-route-heroimage img,\n#rio-chat .rio-routepage-v2 .rio-active-media img,\n#rio-chat .rio-routepage-v2 .rio-compare-thumb img,\n#rio-chat .rio-routepage-v2 .rio-meditation-image,\n#rio-chat .rio-routepage-v2 .rio-proof-image img,\n#rio-chat .rio-routepage-v2 .rio-offer-image img {\n display:block;\n width:100%;\n height:100%;\n object-fit:cover;\n}\n#rio-chat .rio-routepage-v2 .rio-route-heroimage img[src^=\"data:image/svg\"],\n#rio-chat .rio-routepage-v2 .rio-route-heroimage img[src^=\"data:image/webp\"],\n#rio-chat .rio-routepage-v2 .rio-route-heroimage img[src^=\"data:image/png\"],\n#rio-chat .rio-routepage-v2 .rio-active-media img[src^=\"data:image/svg\"],\n#rio-chat .rio-routepage-v2 .rio-active-media img[src^=\"data:image/webp\"],\n#rio-chat .rio-routepage-v2 .rio-active-media img[src^=\"data:image/png\"],\n#rio-chat .rio-routepage-v2 .rio-compare-thumb img[src^=\"data:image/svg\"],\n#rio-chat .rio-routepage-v2 .rio-compare-thumb img[src^=\"data:image/webp\"],\n#rio-chat .rio-routepage-v2 .rio-compare-thumb img[src^=\"data:image/png\"],\n#rio-chat .rio-routepage-v2 .rio-meditation-image[src^=\"data:image/svg\"],\n#rio-chat .rio-routepage-v2 .rio-meditation-image[src^=\"data:image/webp\"],\n#rio-chat .rio-routepage-v2 .rio-meditation-image[src^=\"data:image/png\"],\n#rio-chat .rio-routepage-v2 .rio-proof-image img[src^=\"data:image/svg\"],\n#rio-chat .rio-routepage-v2 .rio-proof-image img[src^=\"data:image/webp\"],\n#rio-chat .rio-routepage-v2 .rio-proof-image img[src^=\"data:image/png\"],\n#rio-chat .rio-routepage-v2 .rio-offer-image img[src^=\"data:image/svg\"],\n#rio-chat .rio-routepage-v2 .rio-offer-image img[src^=\"data:image/webp\"],\n#rio-chat .rio-routepage-v2 .rio-offer-image img[src^=\"data:image/png\"] {\n object-fit:contain;\n padding:12px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-heroimage figcaption {\n position:absolute;\n left:16px;\n right:16px;\n bottom:16px;\n padding:10px 14px;\n border-radius:14px;\n background:rgba(255,255,255,.93);\n color:var(--rio-purple);\n font-size:13px;\n font-weight:800;\n box-shadow:0 14px 30px -22px rgba(28,19,72,.55);\n}\n#rio-chat .rio-routepage-v2 .rio-mobile-childbar {\n display:none;\n}\n#rio-chat .rio-routepage-v2 .rio-routesticky {\n position:relative;\n max-width:1168px;\n margin:34px auto 0;\n padding:0 0 18px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-wave {\n position:absolute;\n left:0;\n right:0;\n top:4px;\n z-index:0;\n width:100%;\n height:82px;\n pointer-events:none;\n}\n#rio-chat .rio-routepage-v2 .rio-route-wave path {\n fill:none;\n stroke-linecap:round;\n stroke-linejoin:round;\n vector-effect:non-scaling-stroke;\n}\n#rio-chat .rio-routepage-v2 .rio-route-wave-base {\n stroke:rgba(132,118,214,.38);\n stroke-width:4;\n stroke-dasharray:10 16;\n}\n#rio-chat .rio-routepage-v2 .rio-route-wave-progress {\n stroke:var(--rio-orange);\n stroke-width:5;\n transition:stroke-dashoffset .34s ease;\n}\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav {\n position:relative;\n z-index:1;\n display:grid;\n grid-template-columns:repeat(4,minmax(150px,1fr));\n align-items:start;\n gap:22px;\n height:auto;\n max-width:1168px;\n}\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav::before,\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav::after {\n display:none;\n}\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav::before {\n background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 1040 44' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 22 H712' fill='none' stroke='%23d7d0f5' stroke-width='4' stroke-linecap='round'/%3E%3Cpath d='M748 22 H1040' fill='none' stroke='%23d7d0f5' stroke-width='4' stroke-linecap='round' stroke-dasharray='8 14'/%3E%3C/svg%3E\");\n}\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav::after {\n max-width:86%;\n background-image:url(\"data:image/svg+xml,%3Csvg viewBox='0 0 1040 44' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M0 22 H712' fill='none' stroke='%23f28c00' stroke-width='4' stroke-linecap='round'/%3E%3Cpath d='M748 22 H1040' fill='none' stroke='%23f28c00' stroke-width='4' stroke-linecap='round' stroke-dasharray='8 14'/%3E%3C/svg%3E\");\n}\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav-item {\n width:auto;\n margin-top:0 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button {\n min-height:128px;\n padding:0 8px;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button .rio-stepnav-dot {\n width:58px;\n height:58px;\n border-width:3px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button[aria-current=\"step\"] .rio-stepnav-dot {\n border-color:transparent;\n background:var(--rio-orange);\n color:#fff;\n box-shadow:0 0 0 8px rgba(242,140,0,.18),0 13px 28px -16px rgba(92,56,0,.42);\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-next .rio-stepnav-dot {\n border-color:var(--rio-purple-2);\n background:#fff;\n color:var(--rio-purple);\n box-shadow:0 0 0 5px rgba(132,118,214,.12);\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-later .rio-stepnav-button {\n opacity:.62;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-past .rio-stepnav-dot {\n border-color:rgba(242,140,0,.46);\n color:var(--rio-orange);\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button .rio-stepnav-dot svg,\n#rio-chat .rio-routepage-v2 .rio-mobile-step-dot svg {\n width:22px;\n height:22px;\n stroke:currentColor;\n stroke-width:2.5;\n fill:none;\n stroke-linecap:round;\n stroke-linejoin:round;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button .rio-stepnav-label {\n margin-top:14px;\n color:#8c86a6;\n font-size:13px;\n letter-spacing:0;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button[aria-current=\"step\"] .rio-stepnav-label {\n color:var(--rio-orange);\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button .rio-stepnav-title {\n max-width:230px;\n margin:6px auto 0;\n color:var(--rio-muted);\n font-size:15px;\n font-weight:800;\n}\n#rio-chat .rio-mobile-route-list {\n display:none;\n}\n#rio-chat .rio-routepage-v2 .rio-stage-panel {\n padding:34px 56px 0;\n scroll-margin-top:86px;\n}\n#rio-chat .rio-routepage-v2 .rio-stage-heading {\n max-width:900px;\n margin:0 auto 30px;\n padding-top:6px;\n}\n#rio-chat .rio-routepage-v2 .rio-stage-heading h3 {\n margin:0 0 18px;\n color:var(--rio-purple);\n}\n#rio-chat .rio-routepage-v2 .rio-stage-heading p {\n max-width:760px;\n margin-top:0;\n}\n#rio-chat .rio-routepage-v2 .rio-active-advice {\n display:grid;\n grid-template-columns:minmax(230px,.32fr) minmax(0,1fr);\n align-items:start;\n gap:34px;\n max-width:1168px;\n margin:0 auto 28px;\n padding:30px;\n border:1px solid rgba(215,208,245,.9);\n border-top:5px solid var(--rio-orange);\n border-radius:24px;\n background:#fff;\n box-shadow:var(--rio-shadow);\n}\n#rio-chat .rio-routepage-v2 .rio-active-media {\n position:relative;\n align-self:start;\n min-height:0;\n aspect-ratio:1 / 1;\n overflow:hidden;\n border-radius:20px;\n background:#f2f0fb;\n}\n#rio-chat .rio-routepage-v2 .rio-active-copy {\n max-width:820px;\n}\n#rio-chat .rio-routepage-v2 .rio-mainlabel {\n background:linear-gradient(90deg,var(--rio-purple),var(--rio-blue));\n color:#fff;\n letter-spacing:0;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-active-media-badge {\n position:absolute;\n left:14px;\n bottom:14px;\n max-width:calc(100% - 28px);\n padding:8px 12px;\n border-radius:999px;\n background:rgba(255,255,255,.94);\n color:var(--rio-purple);\n font-size:12px;\n font-weight:800;\n box-shadow:0 12px 28px -22px rgba(28,19,72,.5);\n}\n#rio-chat .rio-routepage-v2 .rio-active-copy h3 {\n margin:18px 0 18px;\n}\n#rio-chat .rio-routepage-v2 .rio-productmeta {\n margin-bottom:0;\n}\n#rio-chat .rio-routepage-v2 .rio-mainintro {\n margin:18px 0 0;\n font-size:17px;\n line-height:1.68;\n}\n#rio-chat .rio-routepage-v2 .rio-contentblock {\n margin-top:20px;\n}\n#rio-chat .rio-routepage-v2 .rio-contentblock h4 {\n margin:0 0 12px;\n color:var(--rio-teal);\n font-size:13px;\n font-weight:800;\n letter-spacing:0;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-contentblock p {\n margin:0;\n color:var(--rio-muted);\n font-size:16.5px;\n line-height:1.62;\n}\n#rio-chat .rio-routepage-v2 .rio-gainsblock {\n margin-top:22px;\n}\n#rio-chat .rio-routepage-v2 .rio-todaybox {\n margin-top:22px;\n padding:20px 22px;\n border:1px solid rgba(239,123,69,.38);\n border-radius:18px;\n background:#fff3e6;\n}\n#rio-chat .rio-routepage-v2 .rio-todaybox strong {\n color:#c66f00;\n margin-right:10px;\n}\n#rio-chat .rio-routepage-v2 .rio-todaybox .rio-route-button {\n display:inline-flex;\n margin-top:16px;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps {\n display:grid;\n grid-template-columns:minmax(0,1fr) minmax(230px,270px);\n align-items:stretch;\n gap:18px;\n max-width:1168px;\n margin:0 auto 30px;\n padding:28px 30px;\n overflow:hidden;\n border:1px solid rgba(132,118,214,.35);\n border-radius:24px;\n background:linear-gradient(135deg,#15123d 0%,#221a5a 50%,#352783 100%);\n box-shadow:0 24px 58px -34px rgba(28,19,72,.72);\n}\n#rio-chat .rio-routepage-v2 .rio-weekplan {\n position:relative;\n display:grid;\n grid-template-columns:minmax(205px,.7fr) repeat(3,minmax(0,1fr));\n align-items:center;\n gap:18px;\n min-width:0;\n padding:8px 0;\n color:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-weekplan::after {\n content:none;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps h3 {\n position:relative;\n z-index:1;\n max-width:280px;\n margin:0;\n color:#fff;\n font-size:26px;\n line-height:1.14;\n}\n#rio-chat .rio-routepage-v2 .rio-weekgrid {\n display:contents;\n position:static;\n}\n#rio-chat .rio-routepage-v2 .rio-weekgrid::before {\n content:none;\n}\n#rio-chat .rio-routepage-v2 .rio-weekcard {\n position:relative;\n z-index:1;\n display:grid;\n justify-items:center;\n gap:12px;\n min-height:202px;\n margin:0;\n padding:0;\n border:0;\n background:transparent;\n box-shadow:none;\n text-align:center;\n}\n#rio-chat .rio-routepage-v2 .rio-weekcard:not(:last-child)::after {\n content:\"→\";\n position:absolute;\n left:calc(100% - 14px);\n top:43px;\n color:#c6a2f7;\n font-size:28px;\n font-weight:500;\n line-height:1;\n}\n#rio-chat .rio-routepage-v2 .rio-weeknr {\n position:relative;\n z-index:1;\n display:grid;\n place-items:center;\n width:62px;\n height:62px;\n margin-left:0;\n border:6px solid rgba(255,255,255,.16);\n border-radius:50%;\n background:var(--rio-purple);\n color:#fff;\n font-size:18px;\n font-weight:800;\n line-height:1;\n box-shadow:0 16px 34px -22px rgba(0,0,0,.55);\n}\n#rio-chat .rio-routepage-v2 .rio-weekcard:nth-child(1) .rio-weeknr {background:var(--rio-orange);}\n#rio-chat .rio-routepage-v2 .rio-weekcard:nth-child(2) .rio-weeknr {background:var(--rio-purple);}\n#rio-chat .rio-routepage-v2 .rio-weekcard:nth-child(3) .rio-weeknr {background:var(--rio-teal);}\n#rio-chat .rio-routepage-v2 .rio-weekcard-copy {\n padding:0;\n}\n#rio-chat .rio-routepage-v2 .rio-weekcard h4 {\n margin:0 0 7px;\n color:#fff;\n font-size:18px;\n line-height:1.3;\n}\n#rio-chat .rio-routepage-v2 .rio-weekcard p {\n margin:0;\n color:rgba(255,255,255,.72);\n font-size:13.5px;\n line-height:1.45;\n}\n#rio-chat .rio-routepage-v2 .rio-weekfuture {\n display:grid;\n align-content:center;\n}\n#rio-chat .rio-routepage-v2 .rio-futurecard {\n display:grid;\n align-content:start;\n gap:11px;\n height:100%;\n padding:18px;\n border:1px solid rgba(215,208,245,.94);\n border-radius:20px;\n background:linear-gradient(135deg,#fff 0%,#fff8ef 100%);\n box-shadow:0 18px 40px -30px rgba(0,0,0,.45);\n}\n#rio-chat .rio-routepage-v2 .rio-futurelabel {\n display:inline-flex;\n margin-bottom:10px;\n padding:5px 10px;\n border-radius:999px;\n background:#fff2de;\n color:#b86600;\n font-size:11px;\n font-weight:800;\n letter-spacing:0;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-futurecard h4 {\n margin:0;\n color:var(--rio-purple);\n font-size:17px;\n line-height:1.24;\n}\n#rio-chat .rio-routepage-v2 .rio-futurecard p {\n margin:0;\n color:var(--rio-muted);\n font-size:14px;\n line-height:1.5;\n}\n#rio-chat .rio-routepage-v2 .rio-futurecard > strong {\n display:block;\n margin-top:2px;\n color:#14102b;\n font-size:14px;\n line-height:1.45;\n}\n#rio-chat .rio-routepage-v2 .rio-futurecard > strong::before {\n content:\"\";\n display:inline-block;\n width:9px;\n height:9px;\n margin-right:8px;\n border-radius:50%;\n background:var(--rio-orange);\n}\n#rio-chat .rio-routepage-v2 .rio-future-rating {\n display:flex;\n gap:5px;\n margin-top:12px;\n}\n#rio-chat .rio-routepage-v2 .rio-future-rating span {\n display:grid;\n place-items:center;\n width:25px;\n height:25px;\n border-radius:50%;\n background:#f0edfb;\n color:var(--rio-purple);\n font-size:12px;\n font-weight:800;\n}\n#rio-chat .rio-flow-actions {\n display:flex;\n justify-content:space-between;\n gap:14px;\n max-width:1168px;\n margin:24px auto 24px;\n}\n#rio-chat .rio-flow-button {\n display:inline-flex;\n align-items:center;\n justify-content:center;\n min-height:48px;\n padding:12px 18px;\n border:1px solid var(--rio-line);\n border-radius:999px;\n background:#fff;\n color:var(--rio-purple);\n font-size:14px;\n font-weight:800;\n cursor:pointer;\n}\n#rio-chat .rio-flow-button:hover,\n#rio-chat .rio-flow-button:focus-visible {\n border-color:var(--rio-orange);\n outline:3px solid rgba(242,140,0,.18);\n outline-offset:2px;\n}\n#rio-chat .rio-choice-grid,\n#rio-chat .rio-support-grid {\n display:grid;\n grid-template-columns:repeat(3,minmax(0,1fr));\n gap:20px;\n max-width:1168px;\n margin:0 auto;\n}\n#rio-chat .rio-support-grid {\n grid-template-columns:repeat(3,minmax(0,1fr));\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card {\n min-height:100%;\n overflow:hidden;\n padding:0 24px 24px;\n border:1px solid rgba(215,208,245,.9);\n border-top:5px solid var(--rio-pink);\n border-radius:20px;\n background:#fff;\n box-shadow:0 20px 54px -36px rgba(28,19,72,.4);\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card:nth-child(2) {\n border-top-color:var(--rio-teal);\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card:nth-child(3) {\n border-top-color:var(--rio-blue);\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card.rio-card-meditaties {\n border-color:rgba(242,140,0,.42);\n border-top-color:var(--rio-orange);\n background:linear-gradient(135deg,#fff8ec 0%,#fff 56%,#faf8ff 100%);\n box-shadow:0 24px 60px -34px rgba(242,140,0,.36);\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card.rio-card-meditaties .rio-productmeta {\n display:inline-flex;\n width:max-content;\n max-width:100%;\n padding:6px 11px;\n border-radius:999px;\n background:#fff0dc;\n color:#b86600;\n font-size:12px;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-thumb {\n height:132px;\n margin:0 -24px 20px;\n background:#f2f0fb;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card h4 {\n margin:0 0 12px;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card ul {\n display:grid;\n gap:8px;\n margin:18px 0 0;\n padding:0;\n list-style:none;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card li {\n position:relative;\n padding-left:22px;\n color:var(--rio-muted);\n font-size:14.5px;\n line-height:1.45;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card li::before {\n content:\"\";\n position:absolute;\n left:0;\n top:.43em;\n width:10px;\n height:10px;\n border-radius:50%;\n background:var(--rio-teal);\n}\n#rio-chat .rio-more-cue {\n display:flex;\n align-items:center;\n justify-content:center;\n width:min(520px,100%);\n min-height:48px;\n margin:0 auto 28px;\n padding:12px 18px;\n border:1px dashed rgba(53,39,131,.32);\n border-radius:999px;\n background:#fff;\n color:var(--rio-purple);\n font-size:14px;\n font-weight:800;\n cursor:pointer;\n}\n#rio-chat .rio-more-cue:hover,\n#rio-chat .rio-more-cue:focus-visible {\n border-color:var(--rio-orange);\n background:#fff8ef;\n outline:3px solid rgba(242,140,0,.16);\n outline-offset:2px;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-split {\n display:grid;\n grid-template-columns:minmax(320px,390px) minmax(0,1fr);\n align-items:start;\n gap:30px;\n max-width:1168px;\n margin:0 auto 28px;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-split .rio-active-advice {\n display:block;\n max-width:none;\n height:100%;\n margin:0;\n padding:26px;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-split .rio-active-media {\n width:100%;\n aspect-ratio:4 / 3;\n margin-bottom:22px;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-split .rio-active-copy h3 {\n font-size:28px;\n line-height:1.16;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-split .rio-mainintro {\n font-size:15.5px;\n}\n#rio-chat .rio-routepage-v2 .rio-growth-panel {\n max-width:1168px;\n margin:32px auto 0;\n}\n#rio-chat .rio-routepage-v2 .rio-growth-visual {\n margin-top:26px;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growth-panel {\n max-width:none;\n margin:0;\n padding:26px;\n overflow:visible;\n border:1px solid rgba(215,208,245,.95);\n border-radius:24px;\n background:linear-gradient(135deg,#fff 0%,#faf8ff 100%);\n box-shadow:0 22px 54px -42px rgba(28,19,72,.42);\n}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growth-panel h3 {\n margin-bottom:12px;\n color:var(--rio-purple);\n font-size:26px;\n line-height:1.16;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growthintro {\n max-width:600px;\n margin-bottom:0;\n font-size:15.5px;\n line-height:1.58;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growth-visual {\n height:390px;\n margin-top:14px;\n overflow:visible;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growth-visual svg {\n inset:70px 0 44px;\n height:230px;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growpoint {\n width:132px;\n padding:11px;\n border-radius:16px;\n font-size:12px;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growpoint::before {\n width:16px;\n height:16px;\n margin-bottom:7px;\n border-width:4px;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growpoint b {\n font-size:11px;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growpoint small {\n font-size:11.5px;\n line-height:1.35;\n}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growpoint.p1 {left:0;top:250px;}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growpoint.p2 {left:20%;top:20px;}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growpoint.p3 {left:41%;top:244px;}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growpoint.p4 {left:61%;top:8px;width:142px;}\n#rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growpoint.p5 {right:0;top:82px;}\n#rio-chat .rio-routepage-v2 .rio-growth-mobile {\n display:none;\n}\n#rio-chat .rio-routepage-v2 .rio-growth-mobile li {\n position:relative;\n}\n#rio-chat .rio-routepage-v2 .rio-route-static {\n gap:38px;\n padding:68px 56px 110px;\n background:linear-gradient(180deg,#fff 0%,#faf8ff 52%,#fff 100%);\n}\n#rio-chat .rio-routepage-v2 .rio-meditation-extra {\n display:grid;\n grid-template-columns:minmax(0,1fr) 280px;\n align-items:center;\n gap:28px;\n border:2px dashed rgba(242,140,0,.34);\n background:linear-gradient(135deg,#fff 0%,#fff8ef 45%,#faf8ff 100%);\n}\n#rio-chat .rio-extra-label {\n display:inline-flex;\n width:max-content;\n margin-bottom:14px;\n padding:6px 12px;\n border-radius:999px;\n background:#fff2de;\n color:#b86600;\n font-size:12px;\n font-weight:800;\n letter-spacing:0;\n text-transform:uppercase;\n}\n#rio-chat .rio-meditation-mockup {\n min-height:238px;\n overflow:hidden;\n padding:0;\n border-radius:24px;\n background:linear-gradient(180deg,#352783 0%,#6e61c9 100%);\n color:#fff;\n box-shadow:0 24px 54px -34px rgba(28,19,72,.58);\n}\n#rio-chat .rio-meditation-image {\n height:146px;\n}\n#rio-chat .rio-meditation-mockup strong {\n display:block;\n padding:16px 18px 0;\n font-size:17px;\n}\n#rio-chat .rio-meditation-list {\n display:grid;\n gap:10px;\n margin:14px 0 0;\n padding:0 18px 18px;\n list-style:none;\n}\n#rio-chat .rio-meditation-list li {\n display:flex;\n align-items:center;\n justify-content:space-between;\n gap:14px;\n padding:11px 13px;\n border-radius:14px;\n background:rgba(255,255,255,.16);\n font-size:13.5px;\n}\n#rio-chat .rio-meditation-list span {\n color:#d8d1ff;\n font-size:12px;\n}\n#rio-chat .rio-proof-stats,\n#rio-chat .rio-value-grid,\n#rio-chat .rio-review-grid {\n display:grid;\n gap:16px;\n}\n\n#rio-chat .rio-routepage-v2 .rio-static-card:not(.rio-offer) h3 {\n position:relative;\n margin-bottom:18px;\n padding-top:18px;\n color:var(--rio-purple);\n}\n\n#rio-chat .rio-routepage-v2 .rio-static-card:not(.rio-offer) h3::before {\n content:\"\";\n position:absolute;\n top:0;\n left:0;\n width:72px;\n height:5px;\n border-radius:999px;\n background:linear-gradient(90deg,var(--rio-orange),var(--rio-purple));\n}\n\n#rio-chat .rio-routepage-v2 .rio-static-card:not(.rio-offer) + .rio-static-card {\n padding-top:22px;\n}\n#rio-chat .rio-proof-stats {\n grid-template-columns:repeat(3,minmax(0,1fr));\n margin:28px 0 28px;\n}\n#rio-chat .rio-proof-intro {\n display:grid;\n grid-template-columns:minmax(0,1fr) minmax(220px,320px);\n align-items:center;\n gap:26px;\n margin-top:34px;\n}\n#rio-chat .rio-proof-image {\n height:220px;\n margin:0;\n overflow:hidden;\n border-radius:22px;\n background:#f2f0fb;\n box-shadow:0 24px 54px -38px rgba(28,19,72,.45);\n}\n#rio-chat .rio-proof-stat,\n#rio-chat .rio-review-card,\n#rio-chat .rio-value-item {\n border:1px solid rgba(215,208,245,.9);\n border-radius:18px;\n background:#fff;\n box-shadow:0 18px 52px -40px rgba(28,19,72,.42);\n}\n#rio-chat .rio-proof-stat {\n padding:22px;\n}\n#rio-chat .rio-proof-stat strong {\n display:block;\n color:var(--rio-purple);\n font-size:26px;\n line-height:1.15;\n}\n#rio-chat .rio-proof-stat:nth-child(2) strong {\n color:var(--rio-pink);\n}\n#rio-chat .rio-proof-stat:nth-child(3) strong {\n color:var(--rio-teal);\n}\n#rio-chat .rio-proof-stat span {\n display:block;\n margin-top:8px;\n color:var(--rio-muted);\n font-size:14.5px;\n line-height:1.45;\n}\n#rio-chat .rio-professionals {\n display:grid;\n grid-template-columns:minmax(0,1fr) minmax(280px,420px);\n align-items:center;\n gap:26px;\n margin:30px 0 28px;\n padding:26px;\n border:1px solid rgba(132,118,214,.24);\n border-left:6px solid var(--rio-orange);\n border-radius:22px;\n background:linear-gradient(135deg,#fff 0%,#faf8ff 100%);\n}\n#rio-chat .rio-section-kicker {\n display:inline-flex;\n width:max-content;\n max-width:100%;\n margin-bottom:12px;\n padding:6px 12px;\n border-radius:999px;\n background:#fff2de;\n color:#b86600;\n font-size:12px;\n font-weight:800;\n letter-spacing:0;\n text-transform:uppercase;\n}\n#rio-chat .rio-professionals h4 {\n margin:0 0 12px;\n color:var(--rio-purple);\n font-size:28px;\n line-height:1.16;\n}\n#rio-chat .rio-professionals p {\n margin:0;\n color:var(--rio-muted);\n font-size:16px;\n line-height:1.6;\n}\n#rio-chat .rio-professionals-points {\n display:grid;\n grid-template-columns:repeat(2,minmax(0,1fr));\n gap:12px;\n margin-top:18px;\n}\n#rio-chat .rio-professionals-points article {\n padding:14px;\n border:1px solid rgba(215,208,245,.8);\n border-radius:16px;\n background:#fff;\n}\n#rio-chat .rio-professionals-points strong {\n display:block;\n color:var(--rio-purple);\n font-size:14px;\n line-height:1.35;\n}\n#rio-chat .rio-professionals-points span {\n display:block;\n margin-top:4px;\n color:var(--rio-muted);\n font-size:13px;\n line-height:1.4;\n}\n#rio-chat .rio-professionals-points + p {\n margin-top:16px;\n}\n#rio-chat .rio-professional-team {\n display:grid;\n grid-template-columns:repeat(2,minmax(0,1fr));\n gap:12px;\n}\n#rio-chat .rio-professional {\n padding:12px;\n border:1px solid rgba(215,208,245,.78);\n border-radius:18px;\n background:#fff;\n box-shadow:0 16px 38px -32px rgba(28,19,72,.38);\n}\n#rio-chat .rio-professional-photo {\n width:100%;\n aspect-ratio:1 / .86;\n margin:0 0 10px;\n overflow:hidden;\n border-radius:14px;\n background:#f4f2fc;\n}\n#rio-chat .rio-professional-photo img {\n display:block;\n width:100%;\n height:100%;\n object-fit:cover;\n}\n#rio-chat .rio-professional strong {\n display:block;\n color:var(--rio-purple);\n font-size:14px;\n line-height:1.25;\n}\n#rio-chat .rio-professional span {\n display:block;\n margin-top:2px;\n color:#7b7192;\n font-size:12.5px;\n line-height:1.35;\n overflow-wrap:anywhere;\n}\n#rio-chat .rio-review-grid {\n grid-template-columns:repeat(2,minmax(0,1fr));\n}\n#rio-chat .rio-routepage-v2 .rio-review-title {\n margin-top:38px;\n}\n#rio-chat .rio-routepage-v2 .rio-review-title + .rio-review-grid {\n margin-top:18px;\n}\n#rio-chat .rio-review-card {\n padding:24px;\n}\n#rio-chat .rio-review-head {\n display:flex;\n align-items:center;\n gap:12px;\n margin-bottom:14px;\n}\n#rio-chat .rio-review-avatar {\n display:grid;\n place-items:center;\n width:46px;\n height:46px;\n border-radius:50%;\n background:var(--rio-teal);\n color:#fff;\n font-size:20px;\n font-weight:800;\n}\n#rio-chat .rio-review-card:first-child .rio-review-avatar {\n background:linear-gradient(135deg,var(--rio-lilac),var(--rio-purple));\n}\n#rio-chat .rio-review-name {\n display:block;\n color:#3771c8;\n font-size:17px;\n font-weight:800;\n}\n#rio-chat .rio-review-meta {\n display:block;\n margin-top:2px;\n color:#6c647f;\n font-size:13.5px;\n}\n#rio-chat .rio-stars {\n display:inline-block;\n margin-right:10px;\n color:#f5bd00;\n font-size:18px;\n letter-spacing: 0;\n}\n#rio-chat .rio-review-card p {\n margin:12px 0 0;\n}\n#rio-chat .rio-value-grid {\n grid-template-columns:repeat(3,minmax(0,1fr));\n gap:18px;\n margin-top:30px;\n}\n#rio-chat .rio-value-item {\n display:grid;\n grid-template-columns:92px minmax(0,1fr);\n align-items:center;\n gap:16px;\n padding:14px;\n}\n#rio-chat .rio-value-item:nth-child(3n+1) {\n border-color:rgba(53,39,131,.18);\n background:#fff;\n}\n#rio-chat .rio-value-item:nth-child(3n+2) {\n border-color:rgba(242,140,0,.24);\n background:#fffaf3;\n}\n#rio-chat .rio-value-item:nth-child(3n) {\n border-color:rgba(132,118,214,.24);\n background:#faf8ff;\n}\n#rio-chat .rio-value-thumb {\n width:92px;\n height:78px;\n margin:0;\n overflow:hidden;\n border-radius:14px;\n background:#f4f2fc;\n}\n#rio-chat .rio-value-thumb img {\n display:block;\n width:100%;\n height:100%;\n object-fit:cover;\n}\n#rio-chat .rio-value-copy {\n min-width:0;\n}\n#rio-chat .rio-value-check {\n display:grid;\n place-items:center;\n width:22px;\n height:22px;\n border-radius:50%;\n background:var(--rio-green);\n color:#174820;\n font-size:14px;\n font-weight:800;\n}\n#rio-chat .rio-value-item strong {\n display:block;\n color:var(--rio-ink);\n font-size:15px;\n line-height:1.4;\n}\n#rio-chat .rio-value-copy > span:last-child {\n display:block;\n margin-top:4px;\n color:var(--rio-muted);\n font-size:14px;\n line-height:1.45;\n}\n#rio-chat .rio-november-badge {\n display:inline-flex;\n margin-left:6px;\n padding:2px 8px;\n border-radius:999px;\n background:#fff2de;\n color:#b86600;\n font-size:11px;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-offer {\n display:grid;\n gap:18px;\n padding:44px 48px;\n background:linear-gradient(135deg,var(--rio-purple) 0%,#241a5b 55%,#101143 100%);\n}\n#rio-chat .rio-offer-top {\n display:grid;\n grid-template-columns:minmax(0,1fr) 280px;\n align-items:center;\n gap:28px;\n}\n#rio-chat .rio-offer-image {\n height:220px;\n margin:0;\n overflow:hidden;\n border-radius:22px;\n box-shadow:0 24px 54px -34px rgba(0,0,0,.55);\n}\n#rio-chat .rio-routepage-v2 .rio-offer h3 {\n margin-bottom:0;\n}\n#rio-chat .rio-routepage-v2 .rio-offer-price {\n margin:0;\n line-height:1;\n}\n#rio-chat .rio-price-row {\n display:flex;\n align-items:end;\n gap:18px;\n flex-wrap:wrap;\n}\n#rio-chat .rio-price-row span {\n color:#fff;\n font-size:17px;\n line-height:1.45;\n}\n#rio-chat .rio-risk-line,\n#rio-chat .rio-payment-line {\n color:#f6cb96 !important;\n font-size:14px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-faq details {\n position:relative;\n padding:0;\n}\n#rio-chat .rio-routepage-v2 .rio-faq summary {\n display:flex;\n align-items:center;\n justify-content:space-between;\n gap:18px;\n padding:20px 0;\n list-style:none;\n cursor:pointer;\n}\n#rio-chat .rio-routepage-v2 .rio-faq summary::-webkit-details-marker {\n display:none;\n}\n#rio-chat .rio-faq-toggle {\n display:grid;\n place-items:center;\n flex:0 0 auto;\n width:30px;\n height:30px;\n border-radius:50%;\n background:var(--rio-soft);\n color:var(--rio-purple);\n}\n#rio-chat .rio-faq-toggle::before {\n content:\"+\";\n font-size:22px;\n font-weight:800;\n line-height:1;\n}\n#rio-chat .rio-faq details[open] .rio-faq-toggle::before {\n content:\"-\";\n}\n#rio-chat .rio-faq-repeat {\n display:grid;\n gap:14px;\n justify-items:center;\n text-align:center;\n}\n#rio-chat .rio-faq-repeat .rio-route-button {\n min-width:240px;\n}\n#rio-chat .rio-faq-repeat small {\n color:var(--rio-muted);\n font-size:13.5px;\n}\n#rio-chat .rio-mobile-cta {\n display:none;\n}\n@media(max-width:1100px){\n #rio-chat .rio-routepage-v2 .rio-value-grid {\n grid-template-columns:repeat(2,minmax(0,1fr));\n }\n #rio-chat .rio-routepage-v2 .rio-choice-grid {\n grid-template-columns:1fr;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-route-headbar {\n height:64px;\n padding:13px 78px 13px 20px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-button-compact {\n width:auto;\n min-width:0;\n min-height:38px;\n padding:9px 14px;\n font-size:13px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-button-compact::before {\n content:none;\n }\n #rio-chat .rio-routepage-v2 .rio-routeintro {\n padding:34px 22px 22px;\n }\n #rio-chat .rio-routepage-v2 .rio-routeintro-inner {\n grid-template-columns:1fr;\n gap:20px;\n }\n #rio-chat .rio-routepage-v2 .rio-routeintro-copy {\n gap:14px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-title {\n max-width:330px;\n font-size:33px;\n line-height:1.12;\n }\n #rio-chat .rio-routepage-v2 .rio-routefocus,\n #rio-chat .rio-routepage-v2 .rio-route-recognition,\n #rio-chat .rio-routepage-v2 .rio-route-support {\n max-width:100%;\n font-size:15.5px;\n line-height:1.65;\n }\n #rio-chat .rio-routepage-v2.rio-route-compact-hero .rio-route-title,\n #rio-chat .rio-routepage-v2.rio-route-compact-hero .rio-routefocus,\n #rio-chat .rio-routepage-v2.rio-route-compact-hero .rio-route-recognition,\n #rio-chat .rio-routepage-v2.rio-route-compact-hero .rio-route-support,\n #rio-chat .rio-routepage-v2.rio-route-compact-hero .rio-route-heroimage {\n display:none;\n }\n #rio-chat .rio-routepage-v2.rio-route-compact-hero .rio-mobile-childbar {\n display:flex;\n align-items:center;\n min-height:42px;\n width:100%;\n padding:11px 14px;\n border:1px solid rgba(215,208,245,.92);\n border-radius:14px;\n background:#fff;\n color:var(--rio-purple);\n font-size:14px;\n font-weight:800;\n box-shadow:0 16px 34px -28px rgba(28,19,72,.42);\n }\n #rio-chat .rio-routepage-v2 .rio-routesticky {\n margin-top:24px;\n padding:0;\n }\n #rio-chat .rio-routepage-v2 .rio-route-wave {\n display:none;\n }\n #rio-chat .rio-routepage-v2 .rio-route-heroimage {\n min-height:185px;\n border-width:7px;\n border-radius:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav {\n display:none;\n }\n #rio-chat .rio-mobile-route-list {\n position:relative;\n display:grid;\n gap:12px;\n margin:0;\n padding:0 0 0 2px;\n }\n #rio-chat .rio-mobile-route-list::before {\n content:\"\";\n position:absolute;\n left:27px;\n top:16px;\n bottom:16px;\n width:3px;\n border-radius:999px;\n background:linear-gradient(180deg,var(--rio-orange) 0%,var(--rio-orange) var(--rio-mobile-progress,20%),var(--rio-line) var(--rio-mobile-progress,20%),var(--rio-line) 76%,transparent 76%);\n }\n #rio-chat .rio-mobile-step-card {\n position:relative;\n z-index:1;\n display:grid;\n grid-template-columns:54px minmax(0,1fr);\n gap:13px;\n width:100%;\n min-height:64px;\n padding:11px 13px 11px 0;\n border:0;\n border-radius:16px;\n background:transparent;\n color:var(--rio-ink);\n text-align:left;\n }\n #rio-chat .rio-mobile-step-card[aria-current=\"step\"] {\n padding:13px;\n border:1px solid rgba(215,208,245,.94);\n background:#fff;\n box-shadow:0 20px 42px -32px rgba(28,19,72,.45);\n }\n #rio-chat .rio-mobile-step-dot {\n display:grid;\n place-items:center;\n width:54px;\n height:54px;\n border:2px solid var(--rio-line);\n border-radius:50%;\n background:#fff;\n color:var(--rio-purple);\n font-size:17px;\n font-weight:800;\n }\n #rio-chat .rio-mobile-step-card[aria-current=\"step\"] .rio-mobile-step-dot {\n border-color:var(--rio-orange);\n background:var(--rio-orange);\n color:#fff;\n box-shadow:0 0 0 7px rgba(242,140,0,.14);\n }\n #rio-chat .rio-mobile-step-card.rio-mobile-step-next .rio-mobile-step-dot {\n border-color:var(--rio-purple-2);\n color:var(--rio-purple);\n box-shadow:0 0 0 4px rgba(132,118,214,.12);\n }\n #rio-chat .rio-mobile-step-card.rio-mobile-step-later {\n opacity:.6;\n }\n #rio-chat .rio-mobile-step-card.rio-mobile-step-past .rio-mobile-step-dot {\n border-color:rgba(242,140,0,.48);\n color:var(--rio-orange);\n }\n #rio-chat .rio-mobile-step-copy {\n min-width:0;\n padding-top:4px;\n }\n #rio-chat .rio-mobile-step-time {\n display:block;\n color:#8c86a6;\n font-size:11px;\n font-weight:800;\n letter-spacing:0;\n line-height:1.35;\n text-transform:uppercase;\n }\n #rio-chat .rio-mobile-step-title {\n display:block;\n margin-top:3px;\n color:var(--rio-ink);\n font-size:15px;\n font-weight:800;\n line-height:1.35;\n }\n #rio-chat .rio-mobile-step-detail {\n display:none;\n margin:8px 0 0;\n color:var(--rio-muted);\n font-size:13.5px;\n line-height:1.5;\n }\n #rio-chat .rio-mobile-step-card[aria-current=\"step\"] .rio-mobile-step-detail {\n display:block;\n }\n #rio-chat .rio-routepage-v2 .rio-stage-panel {\n padding:34px 22px 0;\n }\n #rio-chat .rio-routepage-v2 .rio-stage-heading h3 {\n font-size:27px;\n line-height:1.2;\n margin-bottom:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-stage-heading p {\n font-size:15.5px;\n line-height:1.62;\n }\n #rio-chat .rio-routepage-v2 .rio-active-advice {\n grid-template-columns:1fr;\n gap:20px;\n margin-bottom:32px;\n padding:25px 20px;\n border-radius:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-active-media {\n min-height:176px;\n border-radius:18px;\n }\n #rio-chat .rio-routepage-v2 .rio-active-copy h3 {\n margin:18px 0 20px;\n font-size:28px;\n line-height:1.18;\n }\n #rio-chat .rio-routepage-v2 .rio-step2-split {\n grid-template-columns:1fr;\n gap:22px;\n margin-bottom:28px;\n }\n #rio-chat .rio-routepage-v2 .rio-step2-split .rio-active-advice,\n #rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growth-panel {\n padding:22px 18px;\n border-radius:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-step2-split .rio-active-copy h3,\n #rio-chat .rio-routepage-v2 .rio-step2-growth .rio-growth-panel h3 {\n font-size:25px;\n }\n #rio-chat .rio-routepage-v2 .rio-mainintro,\n #rio-chat .rio-routepage-v2 .rio-contentblock p {\n font-size:15.5px;\n }\n #rio-chat .rio-routepage-v2 .rio-todaybox .rio-route-button {\n width:100%;\n }\n #rio-chat .rio-routepage-v2 .rio-weeksteps {\n grid-template-columns:1fr;\n gap:22px;\n margin-bottom:28px;\n padding:22px 18px;\n border-radius:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-weekplan {\n display:grid;\n grid-template-columns:1fr;\n gap:18px;\n padding:0;\n }\n #rio-chat .rio-routepage-v2 .rio-weekplan::after {\n content:none;\n }\n #rio-chat .rio-routepage-v2 .rio-weeksteps h3 {\n max-width:100%;\n margin-bottom:22px;\n font-size:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-weekgrid {\n display:grid;\n grid-template-columns:1fr;\n }\n #rio-chat .rio-routepage-v2 .rio-weekcard {\n grid-template-columns:50px minmax(0,1fr);\n gap:14px;\n justify-items:start;\n min-height:0;\n padding-bottom:22px;\n text-align:left;\n }\n #rio-chat .rio-routepage-v2 .rio-weekcard:not(:last-child)::after {\n left:23px;\n top:48px;\n width:3px;\n height:calc(100% - 38px);\n border-radius:999px;\n background:rgba(255,255,255,.32);\n color:transparent;\n }\n #rio-chat .rio-routepage-v2 .rio-weeknr {\n width:48px;\n height:48px;\n margin-left:0;\n }\n #rio-chat .rio-routepage-v2 .rio-weekfuture {\n gap:12px;\n }\n #rio-chat .rio-routepage-v2 .rio-futurecard {\n padding:16px;\n border-radius:18px;\n }\n #rio-chat .rio-flow-actions {\n flex-direction:column;\n margin-bottom:34px;\n }\n #rio-chat .rio-more-cue {\n border-radius:18px;\n text-align:center;\n }\n #rio-chat .rio-flow-button {\n width:100%;\n }\n #rio-chat .rio-routepage-v2 .rio-practical {\n gap:30px;\n }\n #rio-chat .rio-routepage-v2 .rio-choice-grid,\n #rio-chat .rio-routepage-v2 .rio-support-grid,\n #rio-chat .rio-routepage-v2 .rio-review-grid,\n #rio-chat .rio-routepage-v2 .rio-proof-stats,\n #rio-chat .rio-routepage-v2 .rio-value-grid,\n #rio-chat .rio-routepage-v2 .rio-professionals,\n #rio-chat .rio-routepage-v2 .rio-professionals-points {\n grid-template-columns:1fr;\n }\n #rio-chat .rio-routepage-v2 .rio-growth-visual {\n display:none;\n }\n #rio-chat .rio-routepage-v2 .rio-growth-mobile {\n position:relative;\n display:grid;\n gap:13px;\n margin:24px 0 0;\n padding:4px 0 4px 28px;\n list-style:none;\n }\n #rio-chat .rio-routepage-v2 .rio-growth-mobile::before {\n content:\"\";\n position:absolute;\n left:13px;\n top:18px;\n bottom:18px;\n width:3px;\n border-radius:999px;\n background:linear-gradient(180deg,var(--rio-orange) 0%,var(--rio-purple) 48%,var(--rio-orange) 100%);\n }\n #rio-chat .rio-routepage-v2 .rio-growth-mobile li {\n position:relative;\n padding:15px 16px;\n border:1px solid rgba(215,208,245,.9);\n border-radius:18px;\n background:#fff;\n box-shadow:0 16px 36px -30px rgba(28,19,72,.5);\n }\n #rio-chat .rio-routepage-v2 .rio-growth-mobile li::before {\n content:\"\";\n position:absolute;\n left:-22px;\n top:20px;\n width:14px;\n height:14px;\n border:4px solid #fff;\n border-radius:50%;\n background:var(--rio-purple);\n box-shadow:0 0 0 4px rgba(132,118,214,.2);\n }\n #rio-chat .rio-routepage-v2 .rio-growth-mobile .rio-mobile-good {\n border-color:rgba(242,140,0,.32);\n background:#fff8ef;\n }\n #rio-chat .rio-routepage-v2 .rio-growth-mobile .rio-mobile-good::before {\n background:var(--rio-orange);\n box-shadow:0 0 0 5px rgba(242,140,0,.18);\n }\n #rio-chat .rio-routepage-v2 .rio-growth-mobile b {\n display:block;\n color:var(--rio-purple);\n font-size:14px;\n line-height:1.3;\n }\n #rio-chat .rio-routepage-v2 .rio-growth-mobile small {\n display:block;\n margin-top:4px;\n color:var(--rio-muted);\n font-size:13px;\n line-height:1.45;\n }\n #rio-chat .rio-routepage-v2 .rio-route-static {\n padding:42px 22px 150px;\n }\n #rio-chat .rio-routepage-v2 {\n padding-bottom:118px;\n }\n #rio-chat .rio-routepage-v2 .rio-meditation-extra {\n grid-template-columns:1fr;\n gap:22px;\n }\n #rio-chat .rio-proof-intro,\n #rio-chat .rio-offer-top {\n grid-template-columns:1fr;\n }\n #rio-chat .rio-proof-image,\n #rio-chat .rio-offer-image {\n height:178px;\n }\n #rio-chat .rio-meditation-mockup {\n min-height:0;\n }\n #rio-chat .rio-routepage-v2 .rio-static-card h3 {\n font-size:27px;\n line-height:1.2;\n margin-bottom:18px;\n }\n #rio-chat .rio-review-card,\n #rio-chat .rio-value-item,\n #rio-chat .rio-proof-stat {\n border-radius:16px;\n }\n #rio-chat .rio-routepage-v2 .rio-value-item {\n grid-template-columns:82px minmax(0,1fr);\n gap:14px;\n width:100%;\n }\n #rio-chat .rio-routepage-v2 .rio-value-thumb {\n width:82px;\n height:72px;\n }\n #rio-chat .rio-professionals {\n padding:20px;\n }\n #rio-chat .rio-professionals h4 {\n font-size:24px;\n }\n #rio-chat .rio-professional-team {\n grid-template-columns:repeat(2,minmax(0,1fr));\n }\n #rio-chat .rio-routepage-v2 .rio-offer {\n padding:30px 24px;\n }\n #rio-chat .rio-routepage-v2 .rio-offer-price {\n font-size:56px;\n }\n #rio-chat .rio-mobile-cta {\n position:fixed;\n left:12px;\n right:12px;\n bottom:12px;\n z-index:12;\n display:flex;\n align-items:center;\n justify-content:space-between;\n gap:12px;\n padding:12px;\n border:1px solid rgba(215,208,245,.9);\n border-radius:18px;\n background:rgba(255,255,255,.96);\n box-shadow:0 22px 54px -26px rgba(28,19,72,.52);\n transform:translateY(120%);\n opacity:0;\n pointer-events:none;\n transition:transform .22s ease, opacity .22s ease;\n }\n #rio-chat .rio-routepage-v2.rio-route-scrolled:not(.rio-offer-visible) .rio-mobile-cta {\n transform:translateY(0);\n opacity:1;\n pointer-events:auto;\n }\n #rio-chat .rio-mobile-cta span {\n display:block;\n color:var(--rio-ink);\n font-size:13px;\n font-weight:800;\n line-height:1.25;\n }\n #rio-chat .rio-mobile-cta small {\n display:block;\n color:var(--rio-muted);\n font-size:11px;\n font-weight:700;\n }\n #rio-chat .rio-mobile-cta .rio-route-button {\n min-height:42px;\n padding:10px 14px;\n font-size:13px;\n white-space:nowrap;\n }\n}\n\n/* Actieve chat: de berichtenlijst blijft scrollbaar als het gesprek langer wordt. */\n#rio-chat .rio-assistent.rio-actief {\n display:flex;\n flex-direction:column;\n overflow:hidden;\n}\n#rio-chat .rio-assistent.rio-actief .rio-chatvenster {\n display:flex;\n flex-direction:column;\n height:min(680px, calc(100svh - 150px));\n min-height:430px;\n}\n#rio-chat .rio-assistent.rio-actief .rio-chatkop,\n#rio-chat .rio-assistent.rio-actief .rio-chatonderkant {\n flex:0 0 auto;\n}\n#rio-chat .rio-assistent.rio-actief .rio-berichten {\n flex:1 1 auto;\n min-height:0;\n max-height:none;\n overflow-y:auto;\n overscroll-behavior:contain;\n scroll-behavior:auto;\n touch-action:pan-y;\n -webkit-overflow-scrolling:touch;\n}\n#rio-chat .rio-assistent.rio-actief .rio-chatonderkant {\n border-top:1px solid #f0edf7;\n background:#fff;\n}\n@media(max-width:767px){\n #rio-chat .rio-hero {\n overflow:visible;\n }\n #rio-chat .rio-assistent.rio-actief .rio-chatvenster {\n height:min(650px, calc(100svh - 112px));\n min-height:390px;\n }\n #rio-chat .rio-assistent.rio-actief .rio-berichten {\n min-height:0;\n }\n}\n\n/* Routepagina V2: emotionele flow zoals de Rust in Ouderschap-pagina. */\n#rio-chat .rio-routepage-v2 {\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-route-headbar {\n border-bottom:1px solid rgba(215,208,245,.72);\n background:rgba(255,255,255,.96);\n box-shadow:0 12px 34px -30px rgba(28,19,72,.45);\n}\n#rio-chat .rio-routepage-v2 .rio-routeintro {\n padding:78px 56px 48px;\n overflow:visible;\n background:linear-gradient(180deg,#fff 0%,#fbf9ff 68%,#fff 100%);\n}\n#rio-chat .rio-routepage-v2 .rio-routeintro-inner {\n grid-template-columns:minmax(0,1fr) minmax(330px,420px);\n gap:58px;\n align-items:center;\n}\n#rio-chat .rio-routepage-v2 .rio-routeintro-copy {\n gap:18px;\n}\n#rio-chat .rio-routepage-v2 .rio-hero-eyebrow,\n#rio-chat .rio-routepage-v2 .rio-offer-kicker {\n display:inline-flex;\n width:max-content;\n max-width:100%;\n padding:7px 13px;\n border-radius:999px;\n background:#fff2de;\n color:#b86600;\n font-size:12px;\n font-weight:800;\n letter-spacing:0;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-route-title {\n max-width:820px;\n margin:0 0 12px;\n color:#241a5b;\n font-size:54px;\n line-height:1.06;\n}\n#rio-chat .rio-routepage-v2 .rio-route-title::after {\n width:128px;\n height:6px;\n margin-top:24px;\n background:linear-gradient(90deg,var(--rio-orange) 0%,var(--rio-purple) 72%,var(--rio-teal) 100%);\n}\n#rio-chat .rio-routepage-v2 .rio-route-pillbar {\n display:flex;\n flex-wrap:wrap;\n gap:10px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-pill {\n display:inline-grid;\n gap:1px;\n min-width:132px;\n padding:10px 14px;\n border:1px solid rgba(215,208,245,.95);\n border-radius:16px;\n background:#fff;\n box-shadow:0 14px 32px -28px rgba(28,19,72,.42);\n}\n#rio-chat .rio-routepage-v2 .rio-route-pill:nth-child(2) {\n border-color:rgba(242,140,0,.28);\n background:#fffaf3;\n}\n#rio-chat .rio-routepage-v2 .rio-route-pill:nth-child(3) {\n border-color:rgba(21,152,121,.22);\n background:#f5fffb;\n}\n#rio-chat .rio-routepage-v2 .rio-route-pill strong {\n color:var(--rio-purple);\n font-size:13px;\n line-height:1.3;\n}\n#rio-chat .rio-routepage-v2 .rio-route-pill span {\n color:var(--rio-muted);\n font-size:12.5px;\n line-height:1.35;\n}\n#rio-chat .rio-routepage-v2 .rio-route-lead {\n max-width:780px;\n color:#332d4f;\n font-size:20px;\n line-height:1.68;\n}\n#rio-chat .rio-routepage-v2 .rio-hero-insight {\n display:grid;\n grid-template-columns:94px minmax(0,1fr);\n align-items:center;\n gap:18px;\n max-width:780px;\n padding:20px 22px;\n border:1px solid rgba(215,208,245,.92);\n border-left:6px solid var(--rio-orange);\n border-radius:24px;\n background:#fff;\n box-shadow:0 22px 50px -40px rgba(28,19,72,.46);\n}\n#rio-chat .rio-routepage-v2 .rio-insight-number {\n display:grid;\n place-items:center;\n width:78px;\n height:78px;\n border-radius:24px;\n background:linear-gradient(135deg,var(--rio-purple) 0%,#241a5b 100%);\n color:#fff;\n font-size:24px;\n font-weight:800;\n line-height:1;\n}\n#rio-chat .rio-routepage-v2 .rio-insight-copy {\n display:grid;\n gap:5px;\n}\n#rio-chat .rio-routepage-v2 .rio-insight-copy strong {\n color:var(--rio-purple);\n font-size:18px;\n line-height:1.3;\n}\n#rio-chat .rio-routepage-v2 .rio-insight-copy span {\n color:var(--rio-muted);\n font-size:15.5px;\n line-height:1.6;\n}\n#rio-chat .rio-routepage-v2 .rio-routefocus {\n max-width:780px;\n padding:18px 20px;\n border:1px solid rgba(21,152,121,.18);\n border-left:5px solid var(--rio-teal);\n border-radius:20px;\n background:#f6fffb;\n color:#2f2851;\n font-size:16.5px;\n line-height:1.62;\n}\n#rio-chat .rio-routepage-v2 .rio-hero-actions {\n display:flex;\n flex-wrap:wrap;\n align-items:center;\n gap:14px;\n margin-top:4px;\n}\n#rio-chat .rio-routepage-v2 .rio-hero-actions .rio-route-button {\n min-height:50px;\n padding:14px 23px;\n}\n#rio-chat .rio-routepage-v2 .rio-hero-note {\n max-width:330px;\n color:#6a6381;\n font-size:13.5px;\n line-height:1.45;\n}\n#rio-chat .rio-routepage-v2 .rio-route-heroimage {\n min-height:430px;\n border:12px solid #fff;\n border-radius:34px;\n background:linear-gradient(180deg,#f4f2fc 0%,#fff 100%);\n box-shadow:0 36px 86px -48px rgba(28,19,72,.62);\n}\n#rio-chat .rio-routepage-v2 .rio-route-heroimage img {\n object-fit:contain;\n padding:16px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-heroimage figcaption {\n left:20px;\n right:20px;\n bottom:20px;\n border:1px solid rgba(215,208,245,.75);\n border-radius:18px;\n background:rgba(255,255,255,.96);\n}\n#rio-chat .rio-routepage-v2 .rio-route-map-intro {\n display:grid;\n grid-template-columns:minmax(0,1fr) minmax(260px,340px);\n align-items:end;\n gap:28px;\n max-width:1168px;\n margin:68px auto 0;\n}\n#rio-chat .rio-routepage-v2 .rio-route-map-intro h2 {\n max-width:760px;\n margin:0;\n color:var(--rio-purple);\n font-size:38px;\n line-height:1.12;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-route-map-intro p {\n max-width:780px;\n margin:14px 0 0;\n color:var(--rio-muted);\n font-size:17px;\n line-height:1.65;\n}\n#rio-chat .rio-routepage-v2 .rio-route-map-aside {\n display:grid;\n gap:5px;\n padding:18px 20px;\n border:1px solid rgba(242,140,0,.3);\n border-radius:22px;\n background:#fff8ef;\n}\n#rio-chat .rio-routepage-v2 .rio-route-map-aside strong {\n color:#b86600;\n font-size:15px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-map-aside span {\n color:var(--rio-muted);\n font-size:14px;\n line-height:1.45;\n}\n#rio-chat .rio-routepage-v2 .rio-routesticky {\n max-width:1168px;\n margin:24px auto 0;\n padding:28px 28px 22px;\n border:1px solid rgba(215,208,245,.92);\n border-radius:30px;\n background:#fff;\n box-shadow:0 24px 64px -44px rgba(28,19,72,.42);\n}\n#rio-chat .rio-routepage-v2 .rio-route-wave {\n left:28px;\n right:28px;\n top:24px;\n width:calc(100% - 56px);\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button {\n min-height:146px;\n border:1px solid transparent;\n border-radius:22px;\n transition:background .18s ease,border-color .18s ease,transform .18s ease;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button:hover,\n#rio-chat .rio-routepage-v2 .rio-stepnav-button:focus-visible {\n background:#faf8ff;\n border-color:rgba(215,208,245,.9);\n outline:none;\n transform:translateY(-1px);\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button[aria-current=\"step\"] {\n background:#fff8ef;\n border-color:rgba(242,140,0,.28);\n}\n#rio-chat .rio-routepage-v2 .rio-stage-panel {\n padding:56px 56px 24px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-stage-heading {\n max-width:1168px;\n margin:0 auto 26px;\n}\n#rio-chat .rio-routepage-v2 .rio-stage-heading h3 {\n position:relative;\n max-width:820px;\n margin:0 0 24px;\n padding-top:18px;\n color:var(--rio-purple);\n font-size:36px;\n line-height:1.14;\n}\n#rio-chat .rio-routepage-v2 .rio-stage-heading h3::before {\n content:\"\";\n position:absolute;\n top:0;\n left:0;\n width:78px;\n height:5px;\n border-radius:999px;\n background:linear-gradient(90deg,var(--rio-orange),var(--rio-purple));\n}\n#rio-chat .rio-routepage-v2 .rio-stage-heading p {\n max-width:790px;\n color:var(--rio-muted);\n font-size:17px;\n line-height:1.66;\n}\n#rio-chat .rio-routepage-v2 .rio-active-advice {\n grid-template-columns:minmax(260px,330px) minmax(0,1fr);\n gap:30px;\n margin-bottom:34px;\n padding:28px;\n border:1px solid rgba(215,208,245,.9);\n border-top:0;\n border-left:7px solid var(--rio-orange);\n border-radius:30px;\n box-shadow:0 28px 72px -48px rgba(28,19,72,.52);\n}\n#rio-chat .rio-routepage-v2 .rio-active-media {\n aspect-ratio:4 / 3;\n border-radius:24px;\n}\n#rio-chat .rio-routepage-v2 .rio-active-copy h3 {\n margin:16px 0 20px;\n color:#15112d;\n font-size:34px;\n line-height:1.12;\n}\n#rio-chat .rio-routepage-v2 .rio-contentblock h4 {\n color:var(--rio-purple);\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps {\n margin:34px auto 30px;\n padding:34px;\n border-radius:32px;\n background:linear-gradient(135deg,#111036 0%,#1b1850 55%,#312578 100%);\n box-shadow:0 34px 86px -48px rgba(28,19,72,.82);\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps h3 {\n font-size:28px;\n}\n#rio-chat .rio-routepage-v2 .rio-weekcard {\n min-height:182px;\n}\n#rio-chat .rio-routepage-v2 .rio-futurecard {\n border-color:rgba(255,255,255,.45);\n border-left:6px solid var(--rio-orange);\n background:#fbf7ff;\n}\n#rio-chat .rio-routepage-v2 .rio-flow-actions {\n margin-top:28px;\n}\n#rio-chat .rio-routepage-v2 .rio-more-cue {\n background:#faf8ff;\n}\n#rio-chat .rio-routepage-v2 .rio-route-static {\n display:block;\n max-width:none;\n margin:0;\n padding:0;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-static-card {\n max-width:none;\n margin:0;\n padding:82px 56px;\n border:0;\n border-radius:0;\n background:#fff;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-static-card > * {\n max-width:1168px;\n margin-left:auto;\n margin-right:auto;\n}\n#rio-chat .rio-routepage-v2 .rio-static-card:not(.rio-offer) h3 {\n margin-bottom:22px;\n padding-top:20px;\n color:var(--rio-purple);\n font-size:40px;\n line-height:1.12;\n}\n#rio-chat .rio-routepage-v2 .rio-static-card:not(.rio-offer) h3::before {\n width:78px;\n height:5px;\n}\n#rio-chat .rio-routepage-v2 .rio-proof {\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-lead {\n max-width:980px;\n margin-bottom:34px;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-lead p {\n max-width:860px;\n color:#5b5472;\n font-size:18px;\n line-height:1.7;\n}\n#rio-chat .rio-routepage-v2 .rio-professionals {\n max-width:1168px;\n margin-top:0;\n margin-bottom:62px;\n padding:36px;\n border:1px solid rgba(215,208,245,.8);\n border-left:7px solid var(--rio-orange);\n border-radius:32px;\n background:linear-gradient(135deg,#faf8ff 0%,#fff 100%);\n box-shadow:0 30px 78px -54px rgba(28,19,72,.52);\n}\n#rio-chat .rio-routepage-v2 .rio-professionals h4 {\n font-size:34px;\n line-height:1.12;\n}\n#rio-chat .rio-routepage-v2 .rio-professional {\n border-radius:22px;\n box-shadow:0 20px 46px -36px rgba(28,19,72,.44);\n}\n#rio-chat .rio-routepage-v2 .rio-proof-intro {\n max-width:1168px;\n margin-top:0;\n margin-bottom:34px;\n grid-template-columns:minmax(0,1fr) minmax(290px,380px);\n gap:44px;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-intro h3 {\n font-size:44px;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-intro p {\n max-width:780px;\n color:#5b5472;\n font-size:18px;\n line-height:1.65;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-image {\n height:230px;\n border-radius:28px;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stats {\n max-width:1168px;\n gap:22px;\n margin:34px auto 58px;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat {\n padding:28px;\n border-radius:24px;\n box-shadow:0 22px 52px -40px rgba(28,19,72,.42);\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat strong {\n font-size:34px;\n}\n#rio-chat .rio-routepage-v2 .rio-review-title {\n max-width:1168px;\n margin-top:18px;\n margin-bottom:24px;\n font-size:34px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-review-grid {\n max-width:1168px;\n gap:22px;\n}\n#rio-chat .rio-routepage-v2 .rio-review-card {\n padding:28px;\n border-radius:24px;\n box-shadow:0 24px 60px -42px rgba(28,19,72,.48);\n}\n#rio-chat .rio-routepage-v2 .rio-value-stack {\n background:linear-gradient(180deg,#faf8ff 0%,#fff 100%);\n}\n#rio-chat .rio-routepage-v2 .rio-value-stack > p {\n max-width:850px;\n color:#5b5472;\n font-size:18px;\n line-height:1.68;\n}\n#rio-chat .rio-routepage-v2 .rio-value-grid {\n gap:20px;\n margin-top:38px;\n}\n#rio-chat .rio-routepage-v2 .rio-value-item {\n padding:16px;\n border-radius:24px;\n}\n#rio-chat .rio-routepage-v2 .rio-value-thumb {\n width:98px;\n height:86px;\n border-radius:18px;\n}\n#rio-chat .rio-routepage-v2 .rio-offer {\n padding:78px 56px;\n border-radius:0;\n background:linear-gradient(135deg,#241a5b 0%,#352783 58%,#15123d 100%);\n}\n#rio-chat .rio-routepage-v2 .rio-offer-top,\n#rio-chat .rio-routepage-v2 .rio-offer > p,\n#rio-chat .rio-routepage-v2 .rio-offer > .rio-route-button,\n#rio-chat .rio-routepage-v2 .rio-offer > .rio-risk-line,\n#rio-chat .rio-routepage-v2 .rio-offer > .rio-payment-line {\n max-width:1168px;\n}\n#rio-chat .rio-routepage-v2 .rio-offer h3 {\n margin-top:16px;\n color:#fff;\n font-size:42px;\n line-height:1.12;\n}\n#rio-chat .rio-routepage-v2 .rio-offer .rio-offer-image,\n#rio-chat .rio-routepage-v2 .rio-offer > img,\n#rio-chat .rio-routepage-v2 .rio-offer-top img {\n display:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-offer > p {\n color:#ece8ff;\n}\n#rio-chat .rio-routepage-v2 .rio-faq {\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-faq-repeat {\n padding-top:40px;\n padding-bottom:100px;\n background:#faf8ff;\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-routeintro {\n padding:36px 20px 24px;\n }\n #rio-chat .rio-routepage-v2 .rio-routeintro-inner {\n grid-template-columns:1fr;\n gap:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-title {\n max-width:none;\n font-size:33px;\n line-height:1.12;\n }\n #rio-chat .rio-routepage-v2 .rio-route-lead {\n font-size:16.5px;\n line-height:1.62;\n }\n #rio-chat .rio-routepage-v2 .rio-route-pill {\n min-width:0;\n flex:1 1 120px;\n padding:9px 11px;\n }\n #rio-chat .rio-routepage-v2 .rio-hero-insight {\n grid-template-columns:1fr;\n gap:12px;\n padding:18px;\n border-radius:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-insight-number {\n width:max-content;\n height:auto;\n padding:12px 14px;\n border-radius:16px;\n font-size:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-routefocus {\n font-size:15px;\n }\n #rio-chat .rio-routepage-v2 .rio-hero-actions {\n display:grid;\n grid-template-columns:1fr;\n }\n #rio-chat .rio-routepage-v2 .rio-hero-actions .rio-route-button {\n width:100%;\n }\n #rio-chat .rio-routepage-v2 .rio-route-heroimage {\n min-height:230px;\n border-width:8px;\n border-radius:26px;\n }\n #rio-chat .rio-routepage-v2.rio-route-compact-hero .rio-hero-eyebrow,\n #rio-chat .rio-routepage-v2.rio-route-compact-hero .rio-route-pillbar,\n #rio-chat .rio-routepage-v2.rio-route-compact-hero .rio-hero-insight,\n #rio-chat .rio-routepage-v2.rio-route-compact-hero .rio-hero-actions {\n display:none;\n }\n #rio-chat .rio-routepage-v2 .rio-route-map-intro {\n grid-template-columns:1fr;\n gap:16px;\n margin-top:40px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-map-intro h2 {\n font-size:29px;\n line-height:1.16;\n }\n #rio-chat .rio-routepage-v2 .rio-route-map-intro p {\n font-size:15.5px;\n }\n #rio-chat .rio-routepage-v2 .rio-routesticky {\n padding:16px;\n border-radius:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-stage-panel {\n padding:34px 20px 8px;\n }\n #rio-chat .rio-routepage-v2 .rio-stage-heading {\n margin-bottom:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-stage-heading h3 {\n font-size:28px;\n line-height:1.18;\n margin-bottom:20px;\n }\n #rio-chat .rio-routepage-v2 .rio-stage-heading p {\n font-size:15.5px;\n }\n #rio-chat .rio-routepage-v2 .rio-active-advice {\n grid-template-columns:1fr;\n padding:22px 18px;\n border-left-width:5px;\n border-radius:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-active-copy h3 {\n font-size:27px;\n line-height:1.16;\n }\n #rio-chat .rio-routepage-v2 .rio-weeksteps {\n padding:24px 18px;\n border-radius:26px;\n }\n #rio-chat .rio-routepage-v2 .rio-static-card {\n padding:56px 20px;\n }\n #rio-chat .rio-routepage-v2 .rio-static-card:not(.rio-offer) h3 {\n font-size:29px;\n line-height:1.16;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-lead p,\n #rio-chat .rio-routepage-v2 .rio-proof-intro p,\n #rio-chat .rio-routepage-v2 .rio-value-stack > p {\n font-size:15.5px;\n }\n #rio-chat .rio-routepage-v2 .rio-professionals {\n padding:22px;\n border-left-width:5px;\n border-radius:26px;\n }\n #rio-chat .rio-routepage-v2 .rio-professionals h4 {\n font-size:26px;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-intro {\n grid-template-columns:1fr;\n gap:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-intro h3 {\n font-size:31px;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-stats,\n #rio-chat .rio-routepage-v2 .rio-review-grid,\n #rio-chat .rio-routepage-v2 .rio-value-grid {\n grid-template-columns:1fr;\n }\n #rio-chat .rio-routepage-v2 .rio-review-title {\n font-size:28px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-value-item {\n grid-template-columns:86px minmax(0,1fr);\n }\n #rio-chat .rio-routepage-v2 .rio-value-thumb {\n width:86px;\n height:74px;\n }\n #rio-chat .rio-routepage-v2 .rio-offer {\n padding:50px 22px;\n }\n #rio-chat .rio-routepage-v2 .rio-offer h3 {\n font-size:31px;\n }\n}\n\n/* Routepagina V2: Claude-flow verfijning. */\n#rio-chat .rio-routepage-v2 .rio-routeintro {\n padding-top:58px;\n padding-bottom:34px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-routeintro-inner {\n grid-template-columns:minmax(0,1fr) minmax(300px,380px);\n gap:54px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-title {\n max-width:680px;\n font-size:48px;\n line-height:1.08;\n}\n#rio-chat .rio-routepage-v2 .rio-route-lead,\n#rio-chat .rio-routepage-v2 .rio-routefocus {\n max-width:65ch;\n}\n#rio-chat .rio-routepage-v2 .rio-route-lead {\n font-size:18.5px;\n}\n#rio-chat .rio-routepage-v2 .rio-routefocus {\n padding:0;\n border:0;\n border-radius:0;\n background:transparent;\n color:#3b3459;\n font-size:18px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-heroimage {\n min-height:290px;\n border-width:10px;\n border-radius:28px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-map-intro {\n display:block;\n margin-top:38px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-map-intro h2 {\n font-size:32px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-map-intro p {\n margin-top:8px;\n font-size:15.5px;\n}\n#rio-chat .rio-routepage-v2 .rio-routesticky {\n margin-top:18px;\n padding:22px 24px 18px;\n border-radius:22px;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-route-wave {\n top:18px;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button {\n min-height:116px;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button[aria-current=\"step\"] {\n background:#fff8ef;\n border-color:rgba(242,140,0,.34);\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button .rio-stepnav-dot {\n width:50px;\n height:50px;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button .rio-stepnav-label {\n color:#352783;\n font-size:11.5px;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button .rio-stepnav-title {\n color:#352783;\n font-size:14px;\n}\n#rio-chat .rio-routepage-v2 .rio-stage-panel {\n padding-top:42px;\n}\n#rio-chat .rio-routepage-v2 .rio-active-advice {\n align-items:stretch;\n border-left:0;\n border-top:1px solid rgba(215,208,245,.92);\n border-radius:24px;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-active-copy {\n max-width:760px;\n}\n#rio-chat .rio-routepage-v2 .rio-active-copy h3 {\n max-width:620px;\n font-size:32px;\n}\n#rio-chat .rio-routepage-v2 .rio-mainintro,\n#rio-chat .rio-routepage-v2 .rio-contentblock p,\n#rio-chat .rio-routepage-v2 .rio-change-list {\n max-width:65ch;\n}\n#rio-chat .rio-routepage-v2 .rio-more-cue {\n display:none;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline {\n display:block;\n max-width:none;\n margin:28px 0 0;\n padding:0;\n overflow:visible;\n border:0;\n border-radius:0;\n background:transparent;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekplan {\n display:block;\n padding:0;\n color:#14102b;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline h3 {\n margin:0 0 14px;\n color:#352783;\n font-size:13px;\n letter-spacing:0;\n line-height:1.3;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekgrid {\n display:grid;\n gap:12px;\n margin:0;\n padding:0;\n list-style:none;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekcard {\n display:grid;\n grid-template-columns:42px minmax(0,1fr);\n align-items:start;\n justify-items:start;\n gap:12px;\n min-height:0;\n text-align:left;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekcard:not(:last-child)::after {\n display:none;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weeknr {\n width:38px;\n height:38px;\n border:0;\n border-radius:50%;\n background:#352783;\n color:#fff;\n font-size:12px;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekcard:nth-child(1) .rio-weeknr {\n background:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekcard:nth-child(3) .rio-weeknr {\n background:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekcard h4 {\n margin:0 0 2px;\n color:#14102b;\n font-size:15px;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekcard p {\n color:#575173;\n font-size:14px;\n line-height:1.45;\n}\n#rio-chat .rio-routepage-v2 .rio-todaybox {\n max-width:65ch;\n border-color:rgba(242,140,0,.34);\n border-radius:18px;\n background:#fff8ef;\n}\n#rio-chat .rio-routepage-v2 .rio-flow-actions {\n max-width:1168px;\n margin-top:20px;\n padding-top:18px;\n border-top:1px solid rgba(215,208,245,.82);\n}\n#rio-chat .rio-routepage-v2 .rio-flow-button {\n border-color:rgba(132,118,214,.35);\n color:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card,\n#rio-chat .rio-routepage-v2 .rio-compare-card:nth-child(2),\n#rio-chat .rio-routepage-v2 .rio-compare-card:nth-child(3),\n#rio-chat .rio-routepage-v2 .rio-compare-card.rio-card-meditaties {\n padding:0 22px 22px;\n border:1px solid rgba(215,208,245,.9);\n border-top:1px solid rgba(215,208,245,.9);\n border-radius:20px;\n background:#fff;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-thumb {\n height:158px;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card h4 {\n color:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card .rio-productmeta {\n color:#7b7192;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card.rio-card-meditaties {\n background:#fff8ef;\n}\n#rio-chat .rio-routepage-v2 .rio-route-static {\n border-top:1px solid rgba(215,208,245,.7);\n}\n#rio-chat .rio-routepage-v2 .rio-static-card {\n padding-top:76px;\n padding-bottom:76px;\n}\n#rio-chat .rio-routepage-v2 .rio-static-card:not(.rio-offer) h3 {\n max-width:780px;\n font-size:36px;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-lead {\n margin-bottom:30px;\n}\n#rio-chat .rio-routepage-v2 .rio-professional-strip {\n display:grid;\n grid-template-columns:repeat(4,minmax(0,1fr));\n gap:18px;\n margin-top:28px;\n margin-bottom:34px;\n padding:22px 0;\n border-top:1px solid rgba(215,208,245,.85);\n border-bottom:1px solid rgba(215,208,245,.85);\n}\n#rio-chat .rio-routepage-v2 .rio-professional-strip .rio-professional {\n display:grid;\n grid-template-columns:58px minmax(0,1fr);\n align-items:center;\n gap:12px;\n padding:0;\n border:0;\n border-radius:0;\n background:transparent;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-professional-strip .rio-professional-photo {\n width:58px;\n height:58px;\n aspect-ratio:auto;\n margin:0;\n border-radius:50%;\n}\n#rio-chat .rio-routepage-v2 .rio-professional-copy {\n display:block;\n min-width:0;\n}\n#rio-chat .rio-routepage-v2 .rio-professional-copy strong,\n#rio-chat .rio-routepage-v2 .rio-professional strong {\n color:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stats {\n margin:0 auto 22px;\n padding:24px 0;\n border-bottom:1px solid rgba(215,208,245,.85);\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat {\n padding:0 24px 0 0;\n border:0;\n border-radius:0;\n background:transparent;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat strong,\n#rio-chat .rio-routepage-v2 .rio-proof-stat:nth-child(2) strong,\n#rio-chat .rio-routepage-v2 .rio-proof-stat:nth-child(3) strong {\n color:#352783;\n font-size:32px;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-note {\n display:grid;\n grid-template-columns:120px minmax(0,1fr);\n gap:18px;\n align-items:center;\n max-width:1168px;\n margin-top:22px;\n padding:20px 22px;\n border:1px solid rgba(215,208,245,.85);\n border-left:6px solid #8476d6;\n border-radius:18px;\n background:#faf8ff;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-note strong {\n color:#352783;\n font-size:20px;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-note span {\n color:#575173;\n font-size:15.5px;\n line-height:1.58;\n}\n#rio-chat .rio-routepage-v2 .rio-reviews-section {\n background:#faf8ff;\n}\n#rio-chat .rio-routepage-v2 .rio-review-title,\n#rio-chat .rio-routepage-v2 .rio-review-name {\n color:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-review-card {\n border:1px solid rgba(215,208,245,.85);\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-review-starsline {\n display:flex;\n align-items:center;\n gap:10px;\n margin-bottom:12px;\n}\n#rio-chat .rio-routepage-v2 .rio-review-avatar {\n background:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-review-card:first-child .rio-review-avatar {\n background:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-offer {\n background:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-offer-top {\n grid-template-columns:minmax(0,1fr) minmax(320px,430px);\n gap:32px;\n}\n#rio-chat .rio-routepage-v2 .rio-offer-copy > p {\n max-width:620px;\n color:#eeeaff;\n font-size:16px;\n line-height:1.65;\n}\n#rio-chat .rio-routepage-v2 .rio-offer-copy .rio-route-button {\n margin-top:20px;\n}\n#rio-chat .rio-routepage-v2 .rio-offer-route {\n padding:24px;\n border:1px solid rgba(255,255,255,.18);\n border-radius:22px;\n background:rgba(255,255,255,.12);\n}\n#rio-chat .rio-routepage-v2 .rio-offer-route-label {\n display:block;\n margin-bottom:16px;\n color:#fff2de;\n font-size:12px;\n font-weight:800;\n letter-spacing:0;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-offer-mini-route {\n display:grid;\n gap:14px;\n margin:0;\n padding:0;\n list-style:none;\n}\n#rio-chat .rio-routepage-v2 .rio-offer-mini-route li {\n display:grid;\n grid-template-columns:34px minmax(0,1fr);\n gap:11px;\n align-items:start;\n}\n#rio-chat .rio-routepage-v2 .rio-mini-dot {\n display:grid;\n place-items:center;\n width:30px;\n height:30px;\n border-radius:50%;\n background:rgba(255,255,255,.18);\n color:#fff;\n font-size:13px;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-offer-mini-route li:first-child .rio-mini-dot {\n background:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-offer-mini-route small {\n display:block;\n color:#dcd5ff;\n font-size:11px;\n font-weight:800;\n letter-spacing:0;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-offer-mini-route strong {\n display:block;\n margin-top:2px;\n color:#fff;\n font-size:14px;\n line-height:1.35;\n}\n#rio-chat .rio-routepage-v2 .rio-offer-contents {\n margin-top:28px;\n padding-top:22px;\n border-top:1px solid rgba(255,255,255,.18);\n}\n#rio-chat .rio-routepage-v2 .rio-offer-contents h4 {\n margin:0 0 13px;\n color:#fff;\n font-size:13px;\n letter-spacing:0;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-offer-chiplist {\n display:flex;\n flex-wrap:wrap;\n gap:8px;\n}\n#rio-chat .rio-routepage-v2 .rio-offer-chiplist span {\n display:inline-flex;\n padding:7px 11px;\n border:1px solid rgba(255,255,255,.18);\n border-radius:999px;\n background:rgba(255,255,255,.1);\n color:#fff;\n font-size:12.5px;\n font-weight:700;\n}\n#rio-chat .rio-routepage-v2 .rio-risk-line {\n color:#f6cb96 !important;\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-routeintro {\n padding-top:32px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-title {\n font-size:31px;\n }\n #rio-chat .rio-routepage-v2 .rio-routefocus,\n #rio-chat .rio-routepage-v2 .rio-route-lead {\n font-size:15.5px;\n }\n #rio-chat .rio-routepage-v2.rio-route-compact-hero .rio-routefocus {\n display:none;\n }\n #rio-chat .rio-routepage-v2 .rio-route-heroimage {\n min-height:205px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-map-intro {\n margin-top:30px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-map-intro h2 {\n font-size:26px;\n }\n #rio-chat .rio-routepage-v2 .rio-routesticky {\n padding:14px;\n }\n #rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekgrid {\n gap:14px;\n }\n #rio-chat .rio-routepage-v2 .rio-flow-actions {\n padding-top:14px;\n }\n #rio-chat .rio-routepage-v2 .rio-professional-strip,\n #rio-chat .rio-routepage-v2 .rio-proof-stats,\n #rio-chat .rio-routepage-v2 .rio-offer-top {\n grid-template-columns:1fr;\n }\n #rio-chat .rio-routepage-v2 .rio-professional-strip {\n gap:16px;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-note {\n grid-template-columns:1fr;\n }\n #rio-chat .rio-routepage-v2 .rio-offer-route {\n padding:20px;\n }\n}\n/* Routepagina V3: strakke flow met duidelijke rangorde. */\n#rio-chat .rio-routepop {\n align-items:start;\n justify-items:center;\n padding:0;\n overflow-x:hidden;\n}\n#rio-chat .rio-routepop-shell {\n width:min(1280px, 100vw);\n max-width:100vw;\n}\n#rio-chat .rio-routepage-v2,\n#rio-chat .rio-routepage-v2 *,\n#rio-chat .rio-routepage-v2 *::before,\n#rio-chat .rio-routepage-v2 *::after {\n box-sizing:border-box;\n}\n#rio-chat .rio-resultaat.rio-routepage.rio-routepage-v2 {\n width:100%;\n max-width:100%;\n overflow-x:hidden;\n background:#fff;\n color:#14102b;\n font-family:\"Open Sans\", Arial, sans-serif;\n}\n#rio-chat .rio-routepage-v2 .rio-route-headbar {\n height:72px;\n padding:14px 56px;\n border-bottom:1px solid rgba(215,208,245,.82);\n background:#fff;\n color:#352783;\n box-shadow:0 12px 34px -30px rgba(28,19,72,.4);\n}\n#rio-chat .rio-routepage-v2 .rio-route-brand,\n#rio-chat .rio-routepage-v2 .rio-route-brand-main {\n color:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-route-brand-sub {\n color:#8c86a6;\n}\n#rio-chat .rio-routepage-v2 .rio-routeintro {\n width:100%;\n padding:54px 56px 36px;\n overflow:hidden;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-routeintro-inner {\n display:grid;\n grid-template-columns:minmax(0,1fr) minmax(300px,380px);\n align-items:center;\n gap:54px;\n max-width:1168px;\n margin:0 auto;\n}\n#rio-chat .rio-routepage-v2 .rio-routeintro-copy {\n min-width:0;\n}\n#rio-chat .rio-routepage-v2 .rio-route-title {\n max-width:680px;\n margin:0 0 16px;\n color:#241a5b;\n font-size:48px;\n line-height:1.08;\n}\n#rio-chat .rio-routepage-v2 .rio-route-title::after {\n width:118px;\n height:5px;\n margin-top:24px;\n background:linear-gradient(90deg,#f28c00 0%,#352783 100%);\n}\n#rio-chat .rio-routepage-v2 .rio-route-lead,\n#rio-chat .rio-routepage-v2 .rio-route-recognition,\n#rio-chat .rio-routepage-v2 .rio-routefocus {\n max-width:65ch;\n color:#3b3459;\n font-size:17.5px;\n line-height:1.68;\n}\n#rio-chat .rio-routepage-v2 .rio-routefocus {\n padding:0;\n border:0;\n background:transparent;\n}\n#rio-chat .rio-routepage-v2 .rio-route-heroimage {\n width:100%;\n min-height:290px;\n margin:0;\n border:10px solid #fff;\n border-radius:28px;\n background:#f4f2fc;\n box-shadow:0 26px 66px -42px rgba(28,19,72,.55);\n}\n#rio-chat .rio-routepage-v2 .rio-route-map-intro {\n display:block;\n max-width:1168px;\n margin:42px auto 0;\n}\n#rio-chat .rio-routepage-v2 .rio-route-map-intro h2 {\n max-width:760px;\n margin:0;\n color:#352783;\n font-size:32px;\n line-height:1.14;\n}\n#rio-chat .rio-routepage-v2 .rio-route-map-intro p {\n max-width:760px;\n margin:9px 0 0;\n color:#575173;\n font-size:15.5px;\n line-height:1.62;\n}\n#rio-chat .rio-routepage-v2 .rio-routesticky {\n max-width:1168px;\n margin:18px auto 0;\n padding:22px 24px 18px;\n overflow:visible;\n border:1px solid rgba(215,208,245,.9);\n border-radius:22px;\n background:#fff;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-route-wave {\n display:block;\n left:74px;\n right:74px;\n top:5px;\n width:calc(100% - 148px);\n height:82px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-wave-base {\n stroke:rgba(132,118,214,.36);\n stroke-width:4;\n stroke-dasharray:9 14;\n}\n#rio-chat .rio-routepage-v2 .rio-route-wave-progress {\n stroke:#f28c00;\n stroke-width:5;\n}\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav {\n display:grid;\n grid-template-columns:repeat(4,minmax(0,1fr));\n gap:16px;\n width:100%;\n height:auto;\n min-height:118px;\n margin:0;\n padding:0;\n overflow:visible;\n}\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav::before,\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav::after {\n display:none;\n}\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav-item,\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav-item:nth-child(1),\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav-item:nth-child(2),\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav-item:nth-child(3),\n#rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav-item:nth-child(4) {\n width:auto;\n margin-top:0 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button {\n min-height:112px;\n padding:0 8px;\n border:1px solid transparent;\n border-radius:18px;\n background:transparent;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button:hover,\n#rio-chat .rio-routepage-v2 .rio-stepnav-button:focus-visible {\n background:#faf8ff;\n border-color:rgba(215,208,245,.9);\n outline:none;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button[aria-current=\"step\"] {\n background:#fff8ef;\n border-color:rgba(242,140,0,.36);\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button .rio-stepnav-dot {\n width:50px;\n height:50px;\n border:2px solid #cec6f8;\n background:#fff;\n color:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button[aria-current=\"step\"] .rio-stepnav-dot {\n border-color:#f28c00;\n background:#f28c00;\n color:#fff;\n box-shadow:0 0 0 8px rgba(242,140,0,.16);\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button .rio-stepnav-label {\n margin-top:12px;\n color:#352783;\n font-size:11.5px;\n font-weight:800;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-button .rio-stepnav-title {\n max-width:210px;\n margin-top:5px;\n color:#575173;\n font-size:14px;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-stage-panel {\n padding:42px 56px 24px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-active-advice {\n display:grid;\n grid-template-columns:minmax(250px,330px) minmax(0,1fr);\n align-items:stretch;\n gap:30px;\n max-width:1168px;\n margin:0 auto 28px;\n padding:28px;\n overflow:hidden;\n border:1px solid rgba(215,208,245,.9);\n border-left:0;\n border-top:1px solid rgba(215,208,245,.9);\n border-radius:24px;\n background:#fff;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-active-media {\n width:100%;\n min-height:0;\n aspect-ratio:4 / 3;\n border-radius:20px;\n background:#f4f2fc;\n}\n#rio-chat .rio-routepage-v2 .rio-active-copy {\n max-width:760px;\n}\n#rio-chat .rio-routepage-v2 .rio-active-copy h3 {\n max-width:620px;\n margin:16px 0 20px;\n color:#14102b;\n font-size:32px;\n line-height:1.14;\n}\n#rio-chat .rio-routepage-v2 .rio-mainlabel {\n background:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-contentblock h4,\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline h3 {\n color:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-mainintro,\n#rio-chat .rio-routepage-v2 .rio-contentblock p,\n#rio-chat .rio-routepage-v2 .rio-change-list {\n max-width:65ch;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline {\n display:block;\n max-width:none;\n margin:28px 0 0;\n padding:0;\n border:0;\n background:transparent;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekplan {\n display:block;\n color:#14102b;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekgrid {\n display:grid;\n gap:12px;\n margin:0;\n padding:0;\n list-style:none;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekcard {\n display:grid;\n grid-template-columns:42px minmax(0,1fr);\n gap:12px;\n min-height:0;\n padding:0;\n border:0;\n background:transparent;\n text-align:left;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weeknr {\n width:38px;\n height:38px;\n border:0;\n border-radius:50%;\n background:#352783;\n color:#fff;\n font-size:12px;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekcard:nth-child(1) .rio-weeknr {\n background:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekcard h4 {\n margin:0 0 2px;\n color:#14102b;\n font-size:15px;\n}\n#rio-chat .rio-routepage-v2 .rio-weeksteps-inline .rio-weekcard p {\n margin:0;\n color:#575173;\n font-size:14px;\n line-height:1.45;\n}\n#rio-chat .rio-routepage-v2 .rio-flow-actions {\n max-width:1168px;\n margin:20px auto 34px;\n padding-top:18px;\n border-top:1px solid rgba(215,208,245,.82);\n}\n#rio-chat .rio-routepage-v2 .rio-growth-panel {\n display:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card,\n#rio-chat .rio-routepage-v2 .rio-compare-card:nth-child(2),\n#rio-chat .rio-routepage-v2 .rio-compare-card:nth-child(3),\n#rio-chat .rio-routepage-v2 .rio-compare-card.rio-card-meditaties {\n padding:0 22px 22px;\n border:1px solid rgba(215,208,245,.9);\n border-top:1px solid rgba(215,208,245,.9);\n border-radius:20px;\n background:#fff;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card.rio-card-meditaties {\n background:#fff8ef;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-thumb {\n height:158px;\n margin:0 -22px 20px;\n background:#f4f2fc;\n}\n#rio-chat .rio-routepage-v2 .rio-compare-card h4 {\n color:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-static-card {\n padding:76px 56px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-proof {\n border-top:1px solid rgba(215,208,245,.75);\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stats {\n gap:22px;\n padding:24px 0;\n border-bottom:1px solid rgba(215,208,245,.85);\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat {\n padding:0 22px 0 0;\n border:0;\n background:transparent;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat strong,\n#rio-chat .rio-routepage-v2 .rio-proof-stat:nth-child(2) strong,\n#rio-chat .rio-routepage-v2 .rio-proof-stat:nth-child(3) strong {\n color:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-note {\n border-left-color:#8476d6;\n background:#faf8ff;\n}\n#rio-chat .rio-routepage-v2 .rio-reviews-section {\n background:#faf8ff;\n}\n#rio-chat .rio-routepage-v2 .rio-review-name {\n color:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-value-stack {\n background:linear-gradient(180deg,#fff 0%,#faf8ff 100%);\n}\n#rio-chat .rio-routepage-v2 .rio-value-stack h3 {\n max-width:860px;\n}\n#rio-chat .rio-routepage-v2 .rio-value-stack > p {\n max-width:760px;\n margin-top:18px;\n color:#5f5876;\n font-size:18px;\n line-height:1.7;\n}\n#rio-chat .rio-routepage-v2 .rio-value-grid {\n display:grid;\n grid-template-columns:repeat(3,minmax(0,1fr));\n gap:18px;\n max-width:1168px;\n margin:36px auto 0;\n}\n#rio-chat .rio-routepage-v2 .rio-value-item {\n position:relative;\n display:grid;\n grid-template-columns:96px minmax(0,1fr);\n gap:16px;\n align-items:center;\n min-height:126px;\n padding:15px;\n border:1px solid rgba(215,208,245,.95);\n border-radius:20px;\n background:#fff;\n box-shadow:0 22px 58px -46px rgba(28,19,72,.46);\n}\n#rio-chat .rio-routepage-v2 .rio-value-item::before {\n content:\"\";\n position:absolute;\n top:0;\n left:18px;\n right:18px;\n height:4px;\n border-radius:0 0 999px 999px;\n background:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-value-item:nth-child(3n+2)::before {\n background:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-value-item:nth-child(3n)::before {\n background:#8476d6;\n}\n#rio-chat .rio-routepage-v2 .rio-value-thumb {\n width:96px;\n height:82px;\n margin:0;\n overflow:hidden;\n border-radius:16px;\n background:#eeeaff;\n}\n#rio-chat .rio-routepage-v2 .rio-value-thumb img {\n display:block;\n width:100%;\n height:100%;\n object-fit:cover;\n}\n#rio-chat .rio-routepage-v2 .rio-value-copy {\n display:block;\n min-width:0;\n}\n#rio-chat .rio-routepage-v2 .rio-value-copy strong {\n display:block;\n color:#352783;\n font-size:16px;\n line-height:1.25;\n}\n#rio-chat .rio-routepage-v2 .rio-value-copy > span:last-child {\n display:block;\n margin-top:7px;\n color:#5f5876;\n font-size:13.5px;\n line-height:1.45;\n}\n#rio-chat .rio-routepage-v2 .rio-november-badge {\n vertical-align:middle;\n margin-left:7px;\n}\n#rio-chat .rio-routepage-v2 .rio-offer {\n background:#352783;\n}\n@media(max-width:1050px){\n #rio-chat .rio-routepage-v2 .rio-value-grid {\n grid-template-columns:repeat(2,minmax(0,1fr));\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepop {\n padding:0;\n background:#fff;\n }\n #rio-chat .rio-routepop-shell,\n #rio-chat .rio-resultaat.rio-routepage.rio-routepage-v2 {\n width:100vw;\n max-width:100vw;\n }\n #rio-chat .rio-routepage-v2 .rio-route-headbar {\n height:auto;\n min-height:62px;\n padding:11px 16px;\n gap:10px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-logo {\n width:38px;\n height:38px;\n border-radius:11px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-brand {\n gap:9px;\n font-size:13px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-brand-sub {\n display:none;\n }\n #rio-chat .rio-routepage-v2 .rio-route-button-compact {\n min-height:38px;\n padding:9px 13px;\n font-size:12.5px;\n white-space:nowrap;\n }\n #rio-chat .rio-routepage-v2 .rio-routeintro {\n padding:28px 18px 24px;\n }\n #rio-chat .rio-routepage-v2 .rio-routeintro-inner {\n grid-template-columns:1fr;\n gap:18px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-title {\n max-width:none;\n margin-bottom:12px;\n font-size:30px;\n line-height:1.12;\n }\n #rio-chat .rio-routepage-v2 .rio-route-title::after {\n margin-top:20px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-lead,\n #rio-chat .rio-routepage-v2 .rio-route-recognition,\n #rio-chat .rio-routepage-v2 .rio-routefocus {\n max-width:none;\n font-size:15.5px;\n line-height:1.62;\n }\n #rio-chat .rio-routepage-v2 .rio-route-heroimage {\n min-height:0;\n aspect-ratio:16 / 10;\n border-width:8px;\n border-radius:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-heroimage figcaption {\n left:12px;\n right:12px;\n bottom:12px;\n padding:8px 10px;\n font-size:11.5px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-map-intro {\n margin-top:30px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-map-intro h2 {\n font-size:26px;\n }\n #rio-chat .rio-routepage-v2 .rio-routesticky {\n width:100%;\n margin-top:16px;\n padding:14px;\n overflow:hidden;\n border-radius:20px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-wave,\n #rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav {\n display:none;\n }\n #rio-chat .rio-routepage-v2 .rio-mobile-route-list {\n display:block;\n margin:0;\n padding:0;\n }\n #rio-chat .rio-routepage-v2 .rio-mobile-route-list::before {\n display:none;\n }\n #rio-chat .rio-routepage-v2 .rio-mobile-step-card {\n display:none;\n }\n #rio-chat .rio-routepage-v2 .rio-mobile-step-card[aria-current=\"step\"] {\n display:grid;\n grid-template-columns:54px minmax(0,1fr);\n width:100%;\n min-height:84px;\n padding:14px;\n border:1px solid rgba(215,208,245,.95);\n border-radius:18px;\n background:#fff8ef;\n box-shadow:none;\n }\n #rio-chat .rio-routepage-v2 .rio-mobile-step-card[aria-current=\"step\"] .rio-mobile-step-detail {\n display:block;\n }\n #rio-chat .rio-routepage-v2 .rio-mobile-stepnav-controls {\n display:grid;\n grid-template-columns:82px minmax(0,1fr) 82px;\n align-items:center;\n gap:8px;\n margin-top:12px;\n }\n #rio-chat .rio-routepage-v2 .rio-mobile-stepnav-arrow {\n min-height:38px;\n padding:0 12px;\n border:1px solid #cec6f8;\n border-radius:999px;\n background:#fff;\n color:#352783;\n font-size:12px;\n font-weight:800;\n }\n #rio-chat .rio-routepage-v2 .rio-mobile-stepnav-arrow:disabled {\n opacity:.42;\n }\n #rio-chat .rio-routepage-v2 .rio-mobile-stepnav-count {\n color:#8c86a6;\n font-size:12px;\n font-weight:800;\n text-align:center;\n }\n #rio-chat .rio-routepage-v2 .rio-stage-panel {\n padding:28px 18px 10px;\n }\n #rio-chat .rio-routepage-v2 .rio-stage-heading {\n margin-bottom:20px;\n }\n #rio-chat .rio-routepage-v2 .rio-stage-heading h3 {\n font-size:27px;\n line-height:1.18;\n margin-bottom:18px;\n }\n #rio-chat .rio-routepage-v2 .rio-stage-heading p {\n font-size:15.5px;\n line-height:1.6;\n }\n #rio-chat .rio-routepage-v2 .rio-active-advice {\n grid-template-columns:1fr;\n gap:20px;\n margin-bottom:24px;\n padding:20px 18px;\n border-radius:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-active-media {\n aspect-ratio:16 / 10;\n border-radius:18px;\n }\n #rio-chat .rio-routepage-v2 .rio-active-copy h3 {\n font-size:27px;\n line-height:1.16;\n }\n #rio-chat .rio-routepage-v2 .rio-choice-grid,\n #rio-chat .rio-routepage-v2 .rio-support-grid,\n #rio-chat .rio-routepage-v2 .rio-proof-stats,\n #rio-chat .rio-routepage-v2 .rio-review-grid,\n #rio-chat .rio-routepage-v2 .rio-professional-strip,\n #rio-chat .rio-routepage-v2 .rio-offer-top {\n grid-template-columns:1fr;\n }\n #rio-chat .rio-routepage-v2 .rio-flow-actions {\n flex-direction:column;\n margin-bottom:30px;\n }\n #rio-chat .rio-routepage-v2 .rio-flow-button {\n width:100%;\n }\n #rio-chat .rio-routepage-v2 .rio-static-card {\n padding:50px 18px;\n }\n #rio-chat .rio-routepage-v2 .rio-static-card:not(.rio-offer) h3 {\n font-size:28px;\n line-height:1.16;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-note {\n grid-template-columns:1fr;\n }\n #rio-chat .rio-routepage-v2 .rio-value-stack > p {\n font-size:15.5px;\n line-height:1.62;\n }\n #rio-chat .rio-routepage-v2 .rio-value-grid {\n grid-template-columns:1fr;\n gap:13px;\n margin-top:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-value-item {\n grid-template-columns:84px minmax(0,1fr);\n min-height:104px;\n padding:13px;\n border-radius:18px;\n }\n #rio-chat .rio-routepage-v2 .rio-value-thumb {\n width:84px;\n height:72px;\n border-radius:14px;\n }\n #rio-chat .rio-routepage-v2 .rio-value-copy strong {\n font-size:15px;\n }\n #rio-chat .rio-routepage-v2 .rio-value-copy > span:last-child {\n font-size:13px;\n }\n #rio-chat .rio-routepage-v2 .rio-november-badge {\n display:inline-flex;\n margin:6px 0 0;\n }\n #rio-chat .rio-routepage-v2 .rio-offer {\n padding:48px 20px 120px;\n }\n #rio-chat .rio-routepage-v2 .rio-offer h3 {\n font-size:30px;\n }\n #rio-chat .rio-routepage-v2 .rio-mobile-cta {\n left:10px;\n right:10px;\n bottom:10px;\n }\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-detail {\n display:block;\n margin-top:5px;\n color:#6d6688;\n font-size:12.5px;\n font-weight:600;\n line-height:1.38;\n}\n#rio-chat .rio-routepage-v2 .rio-stepnav-action {\n display:inline-flex;\n align-items:center;\n justify-content:center;\n min-width:86px;\n min-height:34px;\n padding:0 12px;\n border-radius:999px;\n background:#fff1dd;\n color:#9a5500;\n font-size:11px;\n font-weight:900;\n text-transform:uppercase;\n letter-spacing:.03em;\n white-space:nowrap;\n}\n#rio-chat .rio-routepage-v2 .rio-parent-cycle {\n display:grid;\n grid-template-columns:minmax(0,.92fr) minmax(320px,480px) minmax(280px,360px);\n gap:32px;\n align-items:center;\n border-top:1px solid rgba(215,208,245,.75);\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-parent-cycle-copy h3,\n#rio-chat .rio-routepage-v2 .rio-app-difference-copy h3 {\n margin:14px 0 22px;\n color:#14102b;\n font-size:44px;\n line-height:1.08;\n}\n#rio-chat .rio-routepage-v2 .rio-parent-cycle-copy p,\n#rio-chat .rio-routepage-v2 .rio-app-difference-copy p {\n max-width:58ch;\n margin:0 0 20px;\n color:#4f4868;\n font-size:17px;\n line-height:1.72;\n}\n#rio-chat .rio-routepage-v2 .rio-parent-stat {\n display:flex;\n align-items:center;\n gap:18px;\n margin-top:26px;\n}\n#rio-chat .rio-routepage-v2 .rio-parent-stat strong {\n color:#6f58e8;\n font-size:58px;\n line-height:1;\n}\n#rio-chat .rio-routepage-v2 .rio-parent-stat span {\n max-width:250px;\n color:#14102b;\n font-size:15px;\n font-weight:800;\n line-height:1.35;\n}\n#rio-chat .rio-routepage-v2 .rio-parent-cycle-image {\n width:100%;\n height:520px;\n margin:0;\n overflow:hidden;\n border-radius:0 34px 34px 0;\n background:#f4f2fc;\n box-shadow:0 28px 68px -48px rgba(28,19,72,.55);\n}\n#rio-chat .rio-routepage-v2 .rio-parent-cycle-image img {\n display:block;\n width:100%;\n height:100%;\n object-fit:cover;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-card {\n padding:36px 34px;\n border-radius:30px;\n background:#f4f0ff;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-card h4 {\n margin:0 0 10px;\n color:#14102b;\n font-size:28px;\n line-height:1.18;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-card > p {\n margin:0 0 26px;\n color:#6f58e8;\n font-size:15px;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-list {\n display:grid;\n gap:20px;\n margin:0;\n padding:0;\n list-style:none;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-list li {\n display:grid;\n grid-template-columns:46px minmax(0,1fr);\n gap:16px;\n align-items:start;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-number {\n display:grid;\n place-items:center;\n width:46px;\n height:46px;\n border-radius:50%;\n background:#e7dfff;\n color:#6f58e8;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-list strong {\n display:block;\n color:#14102b;\n font-size:15.5px;\n line-height:1.35;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-list small {\n display:block;\n margin-top:4px;\n color:#6d6688;\n font-size:14px;\n line-height:1.45;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-reminder {\n display:grid;\n grid-template-columns:42px minmax(0,1fr);\n gap:14px;\n margin-top:30px;\n padding:20px;\n border-radius:20px;\n background:#fff1dd;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-reminder::before {\n content:\"↻\";\n display:grid;\n place-items:center;\n width:42px;\n height:42px;\n border-radius:50%;\n background:#ffad42;\n color:#fff;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-reminder strong,\n#rio-chat .rio-routepage-v2 .rio-cycle-reminder span {\n grid-column:2;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-reminder strong {\n color:#14102b;\n font-size:15px;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-reminder span {\n margin-top:-8px;\n color:#655d78;\n font-size:14px;\n line-height:1.45;\n}\n#rio-chat .rio-routepage-v2 .rio-app-difference {\n display:grid;\n grid-template-columns:minmax(0,.86fr) minmax(480px,1fr);\n gap:44px;\n align-items:center;\n overflow:hidden;\n background:linear-gradient(90deg,#fff 0%,#fff 54%,#f7f4ff 100%);\n}\n#rio-chat .rio-routepage-v2 .rio-app-difference-copy h3 {\n color:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-app-bullets {\n display:grid;\n gap:14px;\n margin:28px 0 24px;\n padding:0;\n list-style:none;\n}\n#rio-chat .rio-routepage-v2 .rio-app-bullets li {\n display:flex;\n align-items:center;\n gap:14px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-bullets span {\n display:grid;\n place-items:center;\n width:34px;\n height:34px;\n border-radius:50%;\n background:#352783;\n color:#fff;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-app-bullets strong {\n color:#14102b;\n font-size:17px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-note {\n margin-top:28px;\n padding:20px 24px;\n border-left:4px solid #352783;\n background:#faf8ff;\n}\n#rio-chat .rio-routepage-v2 .rio-app-note strong,\n#rio-chat .rio-routepage-v2 .rio-app-note span {\n display:block;\n}\n#rio-chat .rio-routepage-v2 .rio-app-note strong {\n color:#14102b;\n font-size:17px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-note span {\n margin-top:6px;\n color:#5f5876;\n font-size:15px;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-showcase {\n position:relative;\n display:flex;\n align-items:flex-end;\n justify-content:center;\n min-height:530px;\n padding:34px 8px 18px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-phone {\n position:relative;\n width:216px;\n height:430px;\n flex:0 0 auto;\n margin:0 -22px;\n padding:18px 14px;\n border:10px solid #14121f;\n border-radius:42px;\n background:#fbfaff;\n box-shadow:0 34px 90px -48px rgba(28,19,72,.72);\n}\n#rio-chat .rio-routepage-v2 .rio-phone-main {\n z-index:3;\n width:250px;\n height:500px;\n transform:translateY(-18px);\n}\n#rio-chat .rio-routepage-v2 .rio-phone-left {\n z-index:1;\n transform:rotate(-7deg) translateY(28px);\n}\n#rio-chat .rio-routepage-v2 .rio-phone-right {\n z-index:1;\n transform:rotate(7deg) translateY(30px);\n}\n#rio-chat .rio-routepage-v2 .rio-phone-notch {\n position:absolute;\n top:12px;\n left:50%;\n width:86px;\n height:20px;\n transform:translateX(-50%);\n border-radius:0 0 18px 18px;\n background:#14121f;\n z-index:2;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-screen {\n height:100%;\n padding:44px 14px 18px;\n overflow:hidden;\n border-radius:28px;\n background:#f7f5ff;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-kicker {\n display:block;\n color:#8476d6;\n font-size:11px;\n font-weight:900;\n text-transform:uppercase;\n letter-spacing:.05em;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-screen h4 {\n margin:6px 0 14px;\n color:#14102b;\n font-size:21px;\n line-height:1.05;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-search {\n margin:0 0 12px;\n padding:10px 12px;\n border-radius:14px;\n background:#fff;\n color:#6d6688;\n font-size:12px;\n font-weight:700;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-chips {\n display:flex;\n flex-wrap:wrap;\n gap:7px;\n margin-bottom:14px;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-chips span {\n padding:7px 9px;\n border-radius:999px;\n background:#eee9ff;\n color:#352783;\n font-size:10.5px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-chips span:first-child {\n background:#352783;\n color:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-card {\n display:grid;\n gap:11px;\n padding:12px;\n border-radius:18px;\n background:#fff;\n box-shadow:0 16px 34px -30px rgba(28,19,72,.52);\n}\n#rio-chat .rio-routepage-v2 .rio-phone-card img {\n width:100%;\n height:94px;\n object-fit:cover;\n border-radius:14px;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-card strong {\n display:block;\n color:#14102b;\n font-size:13px;\n line-height:1.25;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-card small {\n display:block;\n margin-top:4px;\n color:#6d6688;\n font-size:11px;\n line-height:1.35;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-progress {\n display:flex;\n gap:7px;\n margin-top:18px;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-progress span {\n width:9px;\n height:9px;\n border-radius:50%;\n background:#ddd7f4;\n}\n#rio-chat .rio-routepage-v2 .rio-phone-progress .rio-dot-active {\n background:#352783;\n}\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-route-workspace {\n display:grid;\n grid-template-columns:minmax(276px,340px) minmax(0,1fr);\n gap:32px;\n align-items:start;\n max-width:1168px;\n margin:24px auto 0;\n }\n #rio-chat .rio-routepage-v2 .rio-routesticky {\n position:sticky;\n top:18px;\n width:100%;\n max-width:none;\n margin:0;\n padding:22px;\n border-radius:24px;\n background:#fff;\n box-shadow:0 24px 70px -54px rgba(28,19,72,.55);\n }\n #rio-chat .rio-routepage-v2 .rio-route-wave {\n display:none;\n }\n #rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav {\n position:relative;\n display:grid;\n grid-template-columns:1fr;\n gap:13px;\n min-height:0;\n padding:0;\n }\n #rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav::before,\n #rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav::after {\n content:\"\";\n display:block;\n position:absolute;\n left:25px;\n top:29px;\n width:3px;\n border-radius:999px;\n }\n #rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav::before {\n bottom:29px;\n background:#e5def8;\n }\n #rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav::after {\n height:var(--rio-route-progress,12%);\n background:#f28c00;\n transition:height .25s ease;\n }\n #rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav-item,\n #rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav-item:nth-child(1),\n #rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav-item:nth-child(2),\n #rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav-item:nth-child(3),\n #rio-chat .rio-routepage-v2 .rio-routesticky .rio-stepnav-item:nth-child(4) {\n position:relative;\n z-index:1;\n width:auto;\n margin-top:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-stepnav-button {\n display:grid;\n grid-template-columns:52px minmax(0,1fr) auto;\n align-items:center;\n gap:14px;\n width:100%;\n min-height:88px;\n padding:14px;\n border:1px solid rgba(215,208,245,.9);\n border-radius:18px;\n background:#fff;\n text-align:left;\n cursor:pointer;\n }\n #rio-chat .rio-routepage-v2 .rio-stepnav-button:hover,\n #rio-chat .rio-routepage-v2 .rio-stepnav-button:focus-visible {\n border-color:#f28c00;\n background:#fff8ef;\n transform:translateX(3px);\n }\n #rio-chat .rio-routepage-v2 .rio-stepnav-button[aria-current=\"step\"] {\n border-color:rgba(242,140,0,.55);\n background:#fff8ef;\n box-shadow:0 14px 34px -28px rgba(242,140,0,.55);\n }\n #rio-chat .rio-routepage-v2 .rio-stepnav-button .rio-stepnav-dot {\n grid-column:1;\n width:52px;\n height:52px;\n margin:0;\n }\n #rio-chat .rio-routepage-v2 .rio-stepnav-text {\n min-width:0;\n }\n #rio-chat .rio-routepage-v2 .rio-stepnav-button .rio-stepnav-label {\n margin:0;\n }\n #rio-chat .rio-routepage-v2 .rio-stepnav-button .rio-stepnav-title {\n max-width:none;\n font-size:14.5px;\n line-height:1.25;\n }\n #rio-chat .rio-routepage-v2 .rio-stepnav-button[aria-current=\"step\"] .rio-stepnav-action {\n background:#f28c00;\n color:#fff;\n }\n #rio-chat .rio-routepage-v2 .rio-stage-panel {\n padding:0;\n min-width:0;\n }\n #rio-chat .rio-routepage-v2 .rio-active-advice,\n #rio-chat .rio-routepage-v2 .rio-flow-actions {\n max-width:none;\n }\n}\n@media(max-width:1180px){\n #rio-chat .rio-routepage-v2 .rio-parent-cycle {\n grid-template-columns:1fr 1fr;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-card {\n grid-column:1 / -1;\n }\n #rio-chat .rio-routepage-v2 .rio-app-difference {\n grid-template-columns:1fr;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-route-workspace {\n display:block;\n max-width:none;\n margin-top:18px;\n }\n #rio-chat .rio-routepage-v2 .rio-mobile-step-card,\n #rio-chat .rio-routepage-v2 .rio-mobile-stepnav-arrow {\n cursor:pointer;\n }\n #rio-chat .rio-routepage-v2 .rio-parent-cycle,\n #rio-chat .rio-routepage-v2 .rio-app-difference {\n display:block;\n }\n #rio-chat .rio-routepage-v2 .rio-parent-cycle-copy h3,\n #rio-chat .rio-routepage-v2 .rio-app-difference-copy h3 {\n font-size:31px;\n line-height:1.12;\n }\n #rio-chat .rio-routepage-v2 .rio-parent-cycle-copy p,\n #rio-chat .rio-routepage-v2 .rio-app-difference-copy p {\n font-size:15.5px;\n line-height:1.62;\n }\n #rio-chat .rio-routepage-v2 .rio-parent-stat {\n align-items:flex-start;\n }\n #rio-chat .rio-routepage-v2 .rio-parent-stat strong {\n font-size:48px;\n }\n #rio-chat .rio-routepage-v2 .rio-parent-cycle-image {\n height:auto;\n aspect-ratio:4 / 3;\n margin:28px 0;\n border-radius:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-card {\n padding:26px 20px;\n border-radius:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-app-difference {\n background:#fff;\n }\n #rio-chat .rio-routepage-v2 .rio-phone-showcase {\n justify-content:flex-start;\n min-height:0;\n margin:26px -18px -8px;\n padding:16px 18px 28px;\n overflow-x:auto;\n scroll-snap-type:x mandatory;\n }\n #rio-chat .rio-routepage-v2 .rio-app-phone,\n #rio-chat .rio-routepage-v2 .rio-phone-main,\n #rio-chat .rio-routepage-v2 .rio-phone-left,\n #rio-chat .rio-routepage-v2 .rio-phone-right {\n width:226px;\n height:444px;\n margin:0 12px 0 0;\n transform:none;\n scroll-snap-align:center;\n }\n}\n\n/* Routepagina V4: één persoonlijke workshop-flow */\n#rio-chat .rio-routepop-shell {\n width:min(780px, 100vw);\n}\n#rio-chat .rio-resultaat.rio-routepage.rio-routepage-v2 {\n min-height:100vh;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-single-headbar {\n position:sticky;\n top:0;\n z-index:12;\n display:flex;\n align-items:center;\n justify-content:space-between;\n gap:18px;\n padding:14px 24px;\n background:rgba(255,255,255,.96);\n backdrop-filter:blur(14px);\n}\n#rio-chat .rio-routepage-v2 .rio-route-logo {\n width:42px;\n height:42px;\n border-radius:12px;\n object-fit:cover;\n}\n#rio-chat .rio-routepage-v2 .rio-single-route {\n width:min(640px, 100%);\n margin:0 auto;\n padding:34px 18px 88px;\n}\n#rio-chat .rio-routepage-v2 .rio-single-section {\n width:100%;\n margin:0 0 26px;\n padding:30px;\n border:1px solid #ded7fa;\n border-radius:28px;\n background:#fff;\n box-shadow:0 22px 58px -48px rgba(34,25,80,.55);\n}\n#rio-chat .rio-routepage-v2 .rio-single-hero {\n padding:24px 0 6px;\n border:0;\n border-radius:0;\n box-shadow:none;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-single-kicker {\n display:inline-flex;\n align-items:center;\n gap:8px;\n margin:0 0 14px;\n color:#352783;\n font-size:12px;\n font-weight:900;\n letter-spacing:.12em;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-single-kicker::before {\n content:\"\";\n width:46px;\n height:5px;\n border-radius:999px;\n background:linear-gradient(90deg,#f28c00,#352783);\n}\n#rio-chat .rio-routepage-v2 .rio-orange-kicker {\n color:#b86400;\n}\n#rio-chat .rio-routepage-v2 .rio-purple-kicker {\n color:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-mini-kicker {\n margin-bottom:10px;\n font-size:11px;\n}\n#rio-chat .rio-routepage-v2 .rio-mini-kicker::before {\n width:24px;\n height:4px;\n}\n#rio-chat .rio-routepage-v2 .rio-single-title,\n#rio-chat .rio-routepage-v2 .rio-single-section h2 {\n margin:0 0 20px;\n color:#241a5b;\n font-size:40px;\n line-height:1.08;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-single-section h2 {\n font-size:31px;\n line-height:1.16;\n}\n#rio-chat .rio-routepage-v2 .rio-single-lead,\n#rio-chat .rio-routepage-v2 .rio-single-section p {\n margin:0 0 18px;\n color:#51496f;\n font-size:17px;\n line-height:1.72;\n}\n#rio-chat .rio-routepage-v2 .rio-told-card,\n#rio-chat .rio-routepage-v2 .rio-recognition-card,\n#rio-chat .rio-routepage-v2 .rio-parent-emotion-card,\n#rio-chat .rio-routepage-v2 .rio-guide-card {\n margin:22px 0 0;\n padding:24px;\n border-radius:24px;\n border:1px solid #e2dcfb;\n background:#faf8ff;\n}\n#rio-chat .rio-routepage-v2 .rio-told-card {\n border-left:6px solid #f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-told-quote {\n color:#211b3b;\n font-size:19px;\n font-weight:800;\n line-height:1.48;\n}\n#rio-chat .rio-routepage-v2 .rio-fact-chips {\n display:flex;\n flex-wrap:wrap;\n gap:10px;\n margin-top:18px;\n}\n#rio-chat .rio-routepage-v2 .rio-fact-chip {\n display:inline-flex;\n flex-direction:column;\n gap:2px;\n min-width:120px;\n padding:10px 13px;\n border-radius:16px;\n background:#fff;\n border:1px solid #e7e0ff;\n}\n#rio-chat .rio-routepage-v2 .rio-fact-chip small {\n color:#8b83aa;\n font-size:10px;\n font-weight:900;\n letter-spacing:.08em;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-fact-chip strong {\n color:#241a5b;\n font-size:14px;\n}\n#rio-chat .rio-routepage-v2 .rio-parent-emotion-card {\n background:#fff8ed;\n border-color:#ffd19a;\n}\n#rio-chat .rio-routepage-v2 .rio-guide-card {\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-guide-mockup {\n margin:0 0 18px;\n padding:22px;\n border-radius:24px;\n background:linear-gradient(145deg,#f3efff,#fff);\n text-align:center;\n}\n#rio-chat .rio-routepage-v2 .rio-guide-mockup img {\n width:min(390px,100%);\n max-height:300px;\n object-fit:contain;\n}\n#rio-chat .rio-routepage-v2 .rio-guide-copy h2 {\n margin-bottom:14px;\n font-size:27px;\n}\n#rio-chat .rio-routepage-v2 .rio-guide-list,\n#rio-chat .rio-routepage-v2 .rio-app-checks,\n#rio-chat .rio-routepage-v2 .rio-result-list {\n display:grid;\n gap:12px;\n padding:0;\n margin:20px 0 0;\n list-style:none;\n}\n#rio-chat .rio-routepage-v2 .rio-single-check {\n display:flex;\n align-items:flex-start;\n gap:12px;\n color:#211b3b;\n font-size:16px;\n line-height:1.48;\n}\n#rio-chat .rio-routepage-v2 .rio-single-checkmark {\n display:grid;\n place-items:center;\n flex:0 0 25px;\n width:25px;\n height:25px;\n border-radius:50%;\n background:#18a783;\n color:#fff;\n font-size:14px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-bridge-card {\n border-color:#ffd19a;\n background:linear-gradient(180deg,#fff8ed,#fff);\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow {\n border:0;\n background:#21175b;\n color:#fff;\n box-shadow:0 28px 76px -48px rgba(33,23,91,.8);\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow .rio-single-kicker,\n#rio-chat .rio-routepage-v2 .rio-workshop-flow h2,\n#rio-chat .rio-routepage-v2 .rio-workshop-flow p {\n color:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-meta {\n display:inline-flex;\n width:auto;\n padding:8px 14px;\n border-radius:999px;\n background:rgba(255,255,255,.12);\n color:#ddd6ff !important;\n font-size:13px !important;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image {\n margin:24px 0;\n overflow:hidden;\n border-radius:24px;\n border:1px solid rgba(255,255,255,.16);\n background:#120c35;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image img {\n width:100%;\n height:260px;\n object-fit:cover;\n display:block;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image figcaption {\n padding:12px 16px 16px;\n color:#ddd6ff;\n font-size:13px;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-stepper {\n display:grid;\n gap:14px;\n margin-top:22px;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step {\n overflow:hidden;\n border:1px solid rgba(255,255,255,.16);\n border-radius:22px;\n background:rgba(255,255,255,.07);\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-head {\n display:grid;\n grid-template-columns:52px 1fr auto;\n align-items:center;\n gap:14px;\n width:100%;\n min-height:72px;\n padding:14px 16px;\n border:0;\n background:transparent;\n color:#fff;\n text-align:left;\n cursor:pointer;\n font:inherit;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-nr {\n display:grid;\n place-items:center;\n width:44px;\n height:44px;\n border-radius:50%;\n background:#f28c00;\n color:#fff;\n font-size:15px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-head strong {\n font-size:18px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-open-label {\n color:#cfc7ff;\n font-size:13px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step.is-open .rio-workshop-open-label {\n color:#ffbd6d;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-body {\n display:none;\n padding:2px 20px 22px 82px;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step.is-open .rio-workshop-step-body {\n display:block;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-bullets {\n display:grid;\n gap:10px;\n margin:0 0 18px;\n padding-left:20px;\n color:#f3efff;\n line-height:1.58;\n}\n#rio-chat .rio-routepage-v2 .rio-result-step.is-open {\n background:#eaf8ee;\n color:#15112b;\n}\n#rio-chat .rio-routepage-v2 .rio-result-step.is-open .rio-workshop-step-head,\n#rio-chat .rio-routepage-v2 .rio-result-step.is-open .rio-workshop-step-head strong {\n color:#15112b;\n}\n#rio-chat .rio-routepage-v2 .rio-result-step .rio-workshop-step-body h3 {\n margin:0 0 14px;\n color:#166f54;\n font-size:24px;\n}\n#rio-chat .rio-routepage-v2 .rio-step-next {\n min-height:44px;\n padding:0 18px;\n border:0;\n border-radius:999px;\n background:#f28c00;\n color:#fff;\n font-weight:900;\n cursor:pointer;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-block {\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-image {\n margin:24px -30px;\n overflow:hidden;\n background:#f3efff;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-image img {\n width:100%;\n height:auto;\n max-height:430px;\n object-fit:cover;\n display:block;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-card,\n#rio-chat .rio-routepage-v2 .rio-cycle-compact {\n margin:16px 0 0;\n padding:22px;\n border:1px solid #e2dcfb;\n border-radius:22px;\n background:#fbfaff;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-card h3,\n#rio-chat .rio-routepage-v2 .rio-cycle-compact h3 {\n margin:0 0 10px;\n color:#352783;\n font-size:22px;\n}\n#rio-chat .rio-routepage-v2 .rio-orange-line {\n margin:18px 0;\n padding:18px 20px;\n border-left:6px solid #f28c00;\n border-radius:18px;\n background:#fff2df;\n color:#8a4c00;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-steps {\n display:grid;\n gap:13px;\n margin:18px 0;\n padding:0;\n list-style:none;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-steps li {\n display:grid;\n grid-template-columns:32px 1fr;\n align-items:start;\n gap:4px;\n padding-left:0;\n position:relative;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-steps li::before {\n content:none;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-number {\n display:grid;\n place-items:center;\n width:28px;\n height:28px;\n border-radius:50%;\n background:#e9e1ff;\n color:#352783;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-steps li div {\n display:grid;\n gap:4px;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-callout {\n padding:16px 18px;\n border-radius:18px;\n background:#fff2df;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-callout strong,\n#rio-chat .rio-routepage-v2 .rio-cycle-callout span {\n display:block;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single {\n background:linear-gradient(180deg,#f6f2ff,#fff);\n}\n#rio-chat .rio-routepage-v2 .rio-store-buttons {\n display:flex;\n flex-wrap:wrap;\n gap:10px;\n margin:16px 0 22px;\n}\n#rio-chat .rio-routepage-v2 .rio-store-buttons span {\n display:inline-flex;\n align-items:center;\n justify-content:center;\n min-height:42px;\n padding:0 18px;\n border-radius:999px;\n background:#241a5b;\n color:#fff;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-mockup-row {\n position:relative;\n min-height:390px;\n margin:28px 0;\n border-radius:30px;\n background:radial-gradient(circle at 50% 30%,rgba(111,88,214,.22),transparent 58%);\n overflow:hidden;\n}\n#rio-chat .rio-routepage-v2 .rio-single-phone {\n position:absolute;\n margin:0;\n filter:drop-shadow(0 22px 32px rgba(33,23,91,.22));\n}\n#rio-chat .rio-routepage-v2 .rio-single-phone img {\n width:100%;\n height:100%;\n object-fit:contain;\n display:block;\n}\n#rio-chat .rio-routepage-v2 .rio-single-phone figcaption {\n position:absolute;\n left:50%;\n bottom:-8px;\n transform:translateX(-50%);\n padding:6px 10px;\n border-radius:999px;\n background:#fff;\n color:#352783;\n font-size:11px;\n font-weight:900;\n white-space:nowrap;\n box-shadow:0 12px 22px -18px rgba(33,23,91,.5);\n}\n#rio-chat .rio-routepage-v2 .rio-single-phone.is-main {\n left:50%;\n top:10px;\n width:270px;\n height:350px;\n transform:translateX(-50%);\n z-index:3;\n}\n#rio-chat .rio-routepage-v2 .rio-single-phone.is-left {\n left:22px;\n top:82px;\n width:220px;\n height:290px;\n transform:rotate(-7deg);\n z-index:2;\n}\n#rio-chat .rio-routepage-v2 .rio-single-phone.is-right {\n right:18px;\n top:86px;\n width:220px;\n height:292px;\n transform:rotate(7deg);\n z-index:1;\n}\n#rio-chat .rio-routepage-v2 .rio-floating-note {\n position:absolute;\n z-index:5;\n width:178px;\n padding:13px 14px;\n border-radius:18px;\n background:#fff;\n box-shadow:0 20px 44px -28px rgba(33,23,91,.6);\n}\n#rio-chat .rio-routepage-v2 .rio-floating-note strong,\n#rio-chat .rio-routepage-v2 .rio-floating-note span {\n display:block;\n}\n#rio-chat .rio-routepage-v2 .rio-floating-note strong {\n color:#241a5b;\n font-size:14px;\n}\n#rio-chat .rio-routepage-v2 .rio-floating-note span {\n color:#6e6686;\n font-size:12px;\n}\n#rio-chat .rio-routepage-v2 .rio-floating-note.is-expert {\n left:34px;\n bottom:24px;\n}\n#rio-chat .rio-routepage-v2 .rio-floating-note.is-week {\n right:28px;\n top:28px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-quote {\n margin:0 0 20px;\n padding:20px 22px;\n border-left:5px solid #352783;\n border-radius:18px;\n background:#fff;\n color:#241a5b;\n font-size:20px;\n font-weight:900;\n line-height:1.38;\n}\n#rio-chat .rio-routepage-v2 .rio-meditation-extra {\n display:grid;\n gap:18px;\n margin:24px 0;\n padding:20px;\n border-radius:24px;\n background:#fff7e8;\n border:1px solid #ffd59f;\n}\n#rio-chat .rio-routepage-v2 .rio-meditation-extra img {\n width:100%;\n max-height:250px;\n object-fit:contain;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tiles {\n display:grid;\n gap:14px;\n margin-top:22px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tile {\n overflow:hidden;\n border:1px solid #e2dcfb;\n border-radius:22px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tile img {\n width:100%;\n height:132px;\n object-fit:cover;\n display:block;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tile div {\n padding:16px 18px 18px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tile h3 {\n margin:0 0 6px;\n color:#241a5b;\n font-size:18px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tile p {\n margin:0;\n font-size:14px;\n line-height:1.5;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-single {\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-group {\n overflow:hidden;\n margin:24px 0;\n border-radius:24px;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-group img {\n width:100%;\n height:auto;\n display:block;\n}\n#rio-chat .rio-routepage-v2 .rio-pro-list,\n#rio-chat .rio-routepage-v2 .rio-proof-stats,\n#rio-chat .rio-routepage-v2 .rio-plan-list {\n display:grid;\n gap:14px;\n}\n#rio-chat .rio-routepage-v2 .rio-pro-card,\n#rio-chat .rio-routepage-v2 .rio-proof-stat,\n#rio-chat .rio-routepage-v2 .rio-plan-card {\n padding:18px;\n border:1px solid #e2dcfb;\n border-radius:22px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-pro-card {\n display:flex;\n align-items:center;\n gap:14px;\n}\n#rio-chat .rio-routepage-v2 .rio-pro-card img {\n width:62px;\n height:62px;\n border-radius:50%;\n object-fit:cover;\n}\n#rio-chat .rio-routepage-v2 .rio-pro-card strong,\n#rio-chat .rio-routepage-v2 .rio-pro-card span,\n#rio-chat .rio-routepage-v2 .rio-proof-stat strong,\n#rio-chat .rio-routepage-v2 .rio-proof-stat span {\n display:block;\n}\n#rio-chat .rio-routepage-v2 .rio-pro-card strong,\n#rio-chat .rio-routepage-v2 .rio-proof-stat strong {\n color:#352783;\n font-size:24px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-pro-card span,\n#rio-chat .rio-routepage-v2 .rio-proof-stat span {\n color:#6b6382;\n}\n#rio-chat .rio-routepage-v2 .rio-reviews-single {\n background:#fbfaff;\n}\n#rio-chat .rio-routepage-v2 .rio-google-review {\n margin-top:16px;\n padding:22px;\n border:1px solid #e2dcfb;\n border-radius:22px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-review-top {\n display:flex;\n align-items:center;\n gap:14px;\n}\n#rio-chat .rio-routepage-v2 .rio-review-avatar {\n display:grid;\n place-items:center;\n width:46px;\n height:46px;\n border-radius:50%;\n background:#188d78;\n color:#fff;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-review-top strong,\n#rio-chat .rio-routepage-v2 .rio-review-top span {\n display:block;\n}\n#rio-chat .rio-routepage-v2 .rio-review-top strong {\n color:#2f6bd7;\n}\n#rio-chat .rio-routepage-v2 .rio-review-stars {\n display:flex;\n align-items:center;\n gap:14px;\n margin:14px 0 10px;\n}\n#rio-chat .rio-routepage-v2 .rio-review-stars span {\n color:#fbbc04;\n letter-spacing:1px;\n}\n#rio-chat .rio-routepage-v2 .rio-review-stars small {\n color:#6b6382;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single {\n background:#21175b;\n color:#fff;\n border:0;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single h2,\n#rio-chat .rio-routepage-v2 .rio-price-single p,\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-single-kicker {\n color:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-card {\n position:relative;\n background:#fff;\n color:#211b3b;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-card.is-selected {\n border:3px solid #f28c00;\n box-shadow:0 20px 46px -32px rgba(242,140,0,.7);\n}\n#rio-chat .rio-routepage-v2 .rio-plan-badge {\n display:inline-flex;\n margin-bottom:10px;\n padding:6px 12px;\n border-radius:999px;\n background:#fff2df;\n color:#9b5600;\n font-size:12px;\n font-weight:900;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-card h3 {\n margin:0 0 10px;\n color:#241a5b;\n font-size:24px;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-price {\n display:block;\n color:#352783;\n font-size:42px;\n line-height:1;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-card small {\n display:block;\n margin:0 0 18px;\n color:#7a718f;\n}\n#rio-chat .rio-routepage-v2 .rio-route-button-light {\n background:#f3efff;\n color:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta {\n text-align:center;\n background:#fff8ed;\n border-color:#ffd19a;\n}\n@media(max-width:767px){\n #rio-chat .rio-routepop {\n padding:0;\n background:#fff;\n }\n #rio-chat .rio-routepop-shell {\n width:100%;\n }\n #rio-chat .rio-routepage-v2 .rio-single-headbar {\n padding:12px 14px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-brand-sub {\n display:none;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route {\n padding:24px 14px 78px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section {\n padding:23px 18px;\n border-radius:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-title {\n font-size:31px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section h2 {\n font-size:26px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section p {\n font-size:15.5px;\n }\n #rio-chat .rio-routepage-v2 .rio-told-card,\n #rio-chat .rio-routepage-v2 .rio-recognition-card,\n #rio-chat .rio-routepage-v2 .rio-parent-emotion-card,\n #rio-chat .rio-routepage-v2 .rio-guide-card {\n padding:20px 16px;\n border-radius:20px;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-step-head {\n grid-template-columns:44px 1fr;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-open-label {\n grid-column:2;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-step-body {\n padding:0 16px 20px;\n }\n #rio-chat .rio-routepage-v2 .rio-understand-image {\n margin:20px -18px;\n }\n #rio-chat .rio-routepage-v2 .rio-mockup-row {\n min-height:330px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-phone.is-main {\n width:210px;\n height:290px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-phone.is-left,\n #rio-chat .rio-routepage-v2 .rio-single-phone.is-right {\n width:150px;\n height:230px;\n top:78px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-phone.is-left {\n left:-8px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-phone.is-right {\n right:-10px;\n }\n #rio-chat .rio-routepage-v2 .rio-floating-note {\n width:150px;\n padding:11px 12px;\n }\n #rio-chat .rio-routepage-v2 .rio-floating-note.is-expert {\n left:12px;\n bottom:18px;\n }\n #rio-chat .rio-routepage-v2 .rio-floating-note.is-week {\n right:12px;\n top:16px;\n }\n}\n/* Routepagina V5: exactere Claude-flow, breed op desktop en compact op mobiel */\n#rio-chat .rio-routepop[hidden] {display:none !important;}\n#rio-chat .rio-routepage-v2 .rio-route-button {\n display:inline-flex;\n align-items:center;\n justify-content:center;\n min-height:48px;\n padding:0 22px;\n border:0;\n border-radius:999px;\n background:#f28c00;\n color:#fff !important;\n text-decoration:none;\n font-weight:800;\n line-height:1.2;\n text-align:center;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-route-button:hover {background:#d77900;}\n#rio-chat .rio-routepage-v2 .rio-route-button-light {\n background:#f3efff;\n color:#352783 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-route-button-secondary {\n background:#352783;\n color:#fff !important;\n}\n#rio-chat .rio-resultaat.rio-routepage.rio-routepage-v2 {\n background:#f3f0fb;\n color:#22222c;\n font-family:\"Open Sans\",\"Segoe UI\",system-ui,sans-serif;\n border:0;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-single-headbar {\n position:sticky;\n top:0;\n z-index:60;\n display:flex;\n align-items:center;\n justify-content:space-between;\n gap:16px;\n min-height:66px;\n padding:12px 20px;\n border-bottom:1px solid #eeeaf9;\n background:rgba(255,255,255,.96);\n backdrop-filter:blur(14px);\n}\n#rio-chat .rio-routepage-v2 .rio-route-logo {\n width:42px;\n height:42px;\n border-radius:12px;\n object-fit:cover;\n}\n#rio-chat .rio-routepage-v2 .rio-route-brand,\n#rio-chat .rio-routepage-v2 .rio-route-brand-copy {\n display:flex;\n align-items:center;\n gap:10px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-brand-copy {\n display:grid;\n gap:0;\n}\n#rio-chat .rio-routepage-v2 .rio-route-brand-main {\n color:#352783;\n font-size:15px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-route-brand-sub {\n color:#7d769a;\n font-size:12px;\n font-weight:700;\n}\n#rio-chat .rio-routepage-v2 .rio-route-button-compact {\n min-height:38px;\n padding:0 15px;\n font-size:13px;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-single-route {\n --rio-rp-pad:20px;\n width:min(620px,100%);\n min-height:100vh;\n margin:0 auto;\n padding:28px var(--rio-rp-pad) 132px;\n display:flex;\n flex-direction:column;\n gap:22px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-single-section {\n width:100%;\n margin:0;\n padding:0;\n border:0;\n border-radius:0;\n background:transparent;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-single-title {\n margin:0 0 16px;\n color:#352783;\n font-size:25px;\n line-height:1.2;\n font-weight:900;\n text-wrap:balance;\n}\n#rio-chat .rio-routepage-v2 .rio-single-section h2,\n#rio-chat .rio-routepage-v2 .rio-single-section h3 {\n margin:0 0 14px;\n color:#352783;\n font-weight:900;\n line-height:1.18;\n}\n#rio-chat .rio-routepage-v2 .rio-single-section h2 {font-size:24px;}\n#rio-chat .rio-routepage-v2 .rio-single-section h3 {font-size:20px;}\n#rio-chat .rio-routepage-v2 .rio-single-lead,\n#rio-chat .rio-routepage-v2 .rio-single-section p {\n margin:0 0 12px;\n color:#3a3a4c;\n font-size:15.5px;\n line-height:1.65;\n}\n#rio-chat .rio-routepage-v2 .rio-single-kicker {\n display:inline-flex;\n align-items:center;\n gap:8px;\n margin:0 0 13px;\n color:#352783;\n font-size:10px;\n font-weight:900;\n letter-spacing:1.1px;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-single-kicker::before {\n content:\"\";\n width:54px;\n height:4px;\n border-radius:999px;\n background:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-mini-kicker {\n margin:0 0 9px;\n color:#8476d6;\n}\n#rio-chat .rio-routepage-v2 .rio-mini-kicker::before {display:none;}\n#rio-chat .rio-routepage-v2 .rio-orange-kicker {color:#b96a00;}\n#rio-chat .rio-routepage-v2 .rio-purple-kicker {color:#352783;}\n#rio-chat .rio-routepage-v2 .rio-told-card {\n margin:16px 0 0;\n padding:18px 20px;\n border:0;\n border-radius:13px;\n background:linear-gradient(135deg,#fff8ef 0%,#f6f3ff 100%);\n box-shadow:inset 0 0 0 1px rgba(206,198,248,.72);\n}\n#rio-chat .rio-routepage-v2 .rio-told-story {\n display:grid;\n grid-template-columns:34px minmax(0,1fr);\n gap:12px;\n align-items:start;\n}\n#rio-chat .rio-routepage-v2 .rio-told-mark {\n display:grid;\n place-items:center;\n width:34px;\n height:34px;\n border-radius:50%;\n background:#f28c00;\n color:#fff;\n font-family:Georgia,serif;\n font-size:30px;\n line-height:1;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-told-copy {\n display:grid;\n gap:10px;\n}\n#rio-chat .rio-routepage-v2 .rio-told-quote {\n margin:0;\n color:#352783;\n font-size:16px;\n line-height:1.65;\n font-style:normal;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-told-copy p:last-child {\n margin:0;\n color:#4a4a5c;\n font-size:14px;\n line-height:1.65;\n font-weight:700;\n}\n#rio-chat .rio-routepage-v2 .rio-fact-chips {\n display:flex;\n flex-wrap:wrap;\n gap:6px;\n margin:0;\n}\n#rio-chat .rio-routepage-v2 .rio-fact-chip {\n display:inline-flex;\n gap:4px;\n align-items:center;\n min-width:0;\n padding:3px 10px;\n border:1px solid #ddd8f5;\n border-radius:999px;\n background:#fff;\n color:#4a4a5c;\n}\n#rio-chat .rio-routepage-v2 .rio-fact-chip small,\n#rio-chat .rio-routepage-v2 .rio-fact-chip strong {\n color:inherit;\n font-size:11px;\n font-weight:700;\n letter-spacing:0;\n text-transform:none;\n}\n#rio-chat .rio-routepage-v2 .rio-fact-chip small::after {content:\":\";}\n#rio-chat .rio-routepage-v2 .rio-recognition-card,\n#rio-chat .rio-routepage-v2 .rio-parent-emotion-card {\n margin:4px 0 0;\n padding:0;\n border:0;\n background:transparent;\n}\n#rio-chat .rio-routepage-v2 .rio-parent-emotion-card p:last-child {\n color:#352783;\n font-size:17px;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-guide-card {\n margin:0;\n overflow:hidden;\n border:1px solid #ece9f9;\n border-radius:15px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-guide-mockup {\n margin:0;\n padding:20px 18px 0;\n border-radius:0;\n background:linear-gradient(135deg,#8476d6 0%,#cec6f8 60%,#f7f1f1 100%);\n text-align:center;\n}\n#rio-chat .rio-routepage-v2 .rio-guide-mockup img {\n width:min(300px,100%);\n max-height:210px;\n object-fit:contain;\n}\n#rio-chat .rio-routepage-v2 .rio-guide-copy {padding:17px 18px 18px;}\n#rio-chat .rio-routepage-v2 .rio-guide-copy h2 {\n margin-bottom:10px;\n font-size:20px;\n}\n#rio-chat .rio-routepage-v2 .rio-guide-list,\n#rio-chat .rio-routepage-v2 .rio-app-checks,\n#rio-chat .rio-routepage-v2 .rio-result-list {\n display:grid;\n gap:9px;\n margin:14px 0 0;\n padding:0;\n list-style:none;\n}\n#rio-chat .rio-routepage-v2 .rio-single-check {\n display:flex;\n align-items:flex-start;\n gap:9px;\n color:#352783;\n font-size:14px;\n font-weight:700;\n line-height:1.45;\n}\n#rio-chat .rio-routepage-v2 .rio-single-checkmark {\n display:grid;\n place-items:center;\n flex:0 0 22px;\n width:22px;\n height:22px;\n border-radius:50%;\n background:#b9e8bb;\n color:#352783;\n font-size:12px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-bridge-card {\n margin-top:4px;\n padding-top:24px;\n border-top:1px solid #eee;\n}\n#rio-chat .rio-routepage-v2 .rio-bridge-card h2 {font-size:24px;}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow {\n overflow:hidden;\n border:2px solid #f28c00;\n border-radius:17px;\n background:#fff;\n color:#22222c;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-single-kicker,\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > h2,\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-meta,\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-intro {\n margin:0;\n padding-left:18px;\n padding-right:18px;\n background:#fff8ef;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-single-kicker {\n display:flex;\n padding-top:18px;\n padding-bottom:9px;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-single-kicker::before {display:none;}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > h2 {\n padding-bottom:7px;\n color:#352783;\n font-size:22px;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-meta {\n display:block;\n padding-bottom:10px;\n color:#6d6d80 !important;\n font-size:13px !important;\n font-weight:700;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-intro {\n padding-bottom:16px;\n border-bottom:1px solid #f7d5a5;\n color:#22222c;\n font-size:15px;\n line-height:1.55;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image {\n margin:18px;\n overflow:hidden;\n border:0;\n border-radius:13px;\n background:#ece9f9;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image img {\n display:block;\n width:100%;\n height:180px;\n object-fit:cover;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image figcaption {\n padding:10px 12px;\n color:#6d6d80;\n font-size:12px;\n font-weight:700;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-stepper {\n display:grid;\n gap:0;\n padding:0 18px 20px;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step {\n overflow:visible;\n border:0;\n border-radius:0;\n background:transparent;\n color:#22222c;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-head {\n display:grid;\n grid-template-columns:34px minmax(0,1fr) auto;\n gap:12px;\n align-items:center;\n width:100%;\n min-height:58px;\n padding:12px 0;\n border:0;\n border-top:1px solid #eeeaf9;\n background:transparent;\n color:#1a1a2e;\n text-align:left;\n cursor:pointer;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step:first-child .rio-workshop-step-head {border-top:0;}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-nr {\n display:grid;\n place-items:center;\n width:28px;\n height:28px;\n border-radius:50%;\n background:#352783;\n color:#fff;\n font-size:11px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step.is-open .rio-workshop-step-nr,\n#rio-chat .rio-routepage-v2 .rio-workshop-step:first-child .rio-workshop-step-nr {\n background:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-result-step .rio-workshop-step-nr {background:#b9e8bb;color:#352783;}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-head strong {\n color:#1a1a2e;\n font-size:15px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-open-label {\n padding:5px 9px;\n border-radius:999px;\n background:#f6f3ff;\n color:#8476d6;\n font-size:10px;\n font-weight:900;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step.is-open .rio-workshop-open-label {\n background:#fff1dd;\n color:#b96a00;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-body {\n display:none;\n padding:0 0 20px 46px;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step.is-open .rio-workshop-step-body {display:block;}\n#rio-chat .rio-routepage-v2 .rio-workshop-bullets {\n display:grid;\n gap:8px;\n margin:0 0 14px;\n padding-left:18px;\n color:#3a3a4c;\n font-size:14px;\n line-height:1.5;\n}\n#rio-chat .rio-routepage-v2 .rio-result-step.is-open {\n margin-top:8px;\n padding:14px;\n border:1px solid #cfead1;\n border-radius:15px;\n background:#f2faf3;\n}\n#rio-chat .rio-routepage-v2 .rio-result-step.is-open .rio-workshop-step-head {\n border-top:0;\n padding-top:0;\n}\n#rio-chat .rio-routepage-v2 .rio-result-step .rio-workshop-step-body h3 {\n margin:0 0 16px;\n color:#352783;\n font-size:20px;\n}\n#rio-chat .rio-routepage-v2 .rio-step-next {\n min-height:42px;\n padding:0 16px;\n border:0;\n border-radius:999px;\n background:#f28c00;\n color:#fff;\n font-weight:800;\n cursor:pointer;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-route-button {\n display:flex;\n margin:0 18px 18px;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-block,\n#rio-chat .rio-routepage-v2 .rio-app-single,\n#rio-chat .rio-routepage-v2 .rio-proof-single,\n#rio-chat .rio-routepage-v2 .rio-reviews-single,\n#rio-chat .rio-routepage-v2 .rio-price-single,\n#rio-chat .rio-routepage-v2 .rio-final-cta {\n padding-top:22px;\n border-top:2px solid #cec6f8;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-image {\n margin:18px calc(-1 * var(--rio-rp-pad));\n overflow:hidden;\n background:#ece9f9;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-image img {\n display:block;\n width:100%;\n height:180px;\n object-fit:cover;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-card,\n#rio-chat .rio-routepage-v2 .rio-cycle-compact {\n margin:16px 0 0;\n padding:16px 17px;\n border:0;\n border-radius:13px;\n background:#f6f3ff;\n}\n#rio-chat .rio-routepage-v2 .rio-orange-line,\n#rio-chat .rio-routepage-v2 .rio-cycle-callout {\n display:grid;\n gap:5px;\n margin:16px 0 0;\n padding:15px;\n border:0;\n border-left:3px solid #f28c00;\n border-radius:12px;\n background:#fff4e5;\n color:#352783;\n font-size:14px;\n line-height:1.5;\n}\n#rio-chat .rio-routepage-v2 .rio-orange-line strong,\n#rio-chat .rio-routepage-v2 .rio-cycle-callout strong {\n color:#352783;\n font-size:16px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-compact h3 {color:#1a1a2e;}\n#rio-chat .rio-routepage-v2 .rio-cycle-compact > p {\n color:#8476d6;\n font-size:13px;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-steps {\n display:grid;\n gap:16px;\n margin:18px 0;\n padding:0;\n list-style:none;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-steps li {\n display:grid;\n grid-template-columns:28px minmax(0,1fr);\n gap:12px;\n align-items:start;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-number {\n display:grid;\n place-items:center;\n width:26px;\n height:26px;\n border-radius:50%;\n background:#ece9f9;\n color:#352783;\n font-size:12px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-steps strong {\n display:block;\n color:#1a1a2e;\n font-size:14px;\n line-height:1.35;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-steps span:not(.rio-cycle-number) {\n display:block;\n margin-top:3px;\n color:#4a4a5c;\n font-size:13px;\n line-height:1.5;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single {\n margin-left:calc(-1 * var(--rio-rp-pad));\n margin-right:calc(-1 * var(--rio-rp-pad));\n padding:26px var(--rio-rp-pad);\n background:linear-gradient(160deg,#fff 0%,#faf8fd 55%,#f3f0fb 100%);\n}\n#rio-chat .rio-routepage-v2 .rio-store-buttons {\n display:flex;\n gap:8px;\n margin:16px 0 18px;\n}\n#rio-chat .rio-routepage-v2 .rio-store-buttons span {\n flex:1 1 0;\n display:grid;\n place-items:center;\n min-height:38px;\n border-radius:11px;\n background:#1a1a2e;\n color:#fff;\n font-size:12px;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-mockup-row {\n position:relative;\n min-height:330px;\n margin:20px 0;\n overflow:hidden;\n border-radius:0;\n background:transparent;\n}\n#rio-chat .rio-routepage-v2 .rio-single-phone {\n position:absolute;\n margin:0;\n filter:drop-shadow(0 18px 28px rgba(26,26,46,.16));\n}\n#rio-chat .rio-routepage-v2 .rio-single-phone img {\n display:block;\n width:100%;\n height:100%;\n object-fit:contain;\n}\n#rio-chat .rio-routepage-v2 .rio-single-phone figcaption {\n position:absolute;\n left:50%;\n bottom:-6px;\n transform:translateX(-50%);\n padding:5px 9px;\n border-radius:999px;\n background:#fff;\n color:#352783;\n font-size:10px;\n font-weight:900;\n white-space:nowrap;\n box-shadow:0 10px 22px rgba(53,39,131,.12);\n}\n#rio-chat .rio-routepage-v2 .rio-single-phone.is-main {\n left:50%;\n top:6px;\n width:210px;\n height:275px;\n transform:translateX(-50%);\n z-index:3;\n}\n#rio-chat .rio-routepage-v2 .rio-single-phone.is-left {\n left:-4px;\n top:88px;\n width:150px;\n height:210px;\n transform:rotate(-6deg);\n z-index:2;\n}\n#rio-chat .rio-routepage-v2 .rio-single-phone.is-right {\n right:-6px;\n top:94px;\n width:150px;\n height:210px;\n transform:rotate(6deg);\n z-index:1;\n}\n#rio-chat .rio-routepage-v2 .rio-floating-note {\n position:absolute;\n z-index:4;\n width:154px;\n padding:10px 12px;\n border-radius:12px;\n background:#fff;\n box-shadow:0 10px 26px rgba(26,26,46,.14);\n}\n#rio-chat .rio-routepage-v2 .rio-floating-note strong,\n#rio-chat .rio-routepage-v2 .rio-floating-note span {\n display:block;\n}\n#rio-chat .rio-routepage-v2 .rio-floating-note strong {\n color:#1a1a2e;\n font-size:12px;\n}\n#rio-chat .rio-routepage-v2 .rio-floating-note span {\n margin-top:3px;\n color:#6d6d80;\n font-size:10px;\n}\n#rio-chat .rio-routepage-v2 .rio-floating-note.is-expert {\n left:0;\n bottom:18px;\n}\n#rio-chat .rio-routepage-v2 .rio-floating-note.is-week {\n right:0;\n top:0;\n}\n#rio-chat .rio-routepage-v2 .rio-app-quote {\n margin:0 0 20px;\n padding:3px 0 3px 15px;\n border-left:3px solid #352783;\n background:transparent;\n color:#1a1a2e;\n font-size:15px;\n font-weight:900;\n line-height:1.5;\n}\n#rio-chat .rio-routepage-v2 .rio-meditation-extra {\n display:grid;\n gap:13px;\n margin:18px 0 20px;\n padding:16px;\n border:1px solid #f7d5a5;\n border-radius:13px;\n background:#fff8ef;\n}\n#rio-chat .rio-routepage-v2 .rio-meditation-extra img {\n width:100%;\n max-height:170px;\n object-fit:contain;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tiles {\n display:grid;\n grid-template-columns:repeat(2,minmax(0,1fr));\n gap:8px;\n margin-top:12px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tile {\n overflow:hidden;\n border:1px solid #e6e2f6;\n border-radius:11px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tile img {\n display:block;\n width:100%;\n height:72px;\n object-fit:cover;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tile div {padding:10px 11px 12px;}\n#rio-chat .rio-routepage-v2 .rio-app-tile h3 {\n margin:0 0 4px;\n color:#352783;\n font-size:12.5px;\n line-height:1.3;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tile p {\n margin:0;\n color:#4a4a5c;\n font-size:11.5px;\n line-height:1.45;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-group {\n overflow:hidden;\n margin:18px 0;\n border-radius:15px;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-group img {\n display:block;\n width:100%;\n height:auto;\n}\n#rio-chat .rio-routepage-v2 .rio-pro-list,\n#rio-chat .rio-routepage-v2 .rio-proof-stats,\n#rio-chat .rio-routepage-v2 .rio-plan-list {\n display:grid;\n gap:11px;\n}\n#rio-chat .rio-routepage-v2 .rio-pro-card,\n#rio-chat .rio-routepage-v2 .rio-proof-stat,\n#rio-chat .rio-routepage-v2 .rio-plan-card {\n padding:14px 16px;\n border:1px solid #e2dcfb;\n border-radius:13px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-pro-card {\n display:flex;\n align-items:center;\n gap:13px;\n}\n#rio-chat .rio-routepage-v2 .rio-pro-card img {\n width:52px;\n height:52px;\n border-radius:50%;\n object-fit:cover;\n}\n#rio-chat .rio-routepage-v2 .rio-pro-card strong,\n#rio-chat .rio-routepage-v2 .rio-proof-stat strong {\n display:block;\n color:#352783;\n font-size:18px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-pro-card span,\n#rio-chat .rio-routepage-v2 .rio-proof-stat span {\n display:block;\n color:#6d6d80;\n font-size:12.5px;\n line-height:1.4;\n}\n#rio-chat .rio-routepage-v2 .rio-google-review {\n margin-top:16px;\n padding:18px;\n border:1px solid #e2dcfb;\n border-radius:13px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-review-top {\n display:flex;\n align-items:center;\n gap:12px;\n}\n#rio-chat .rio-routepage-v2 .rio-review-avatar {\n display:grid;\n place-items:center;\n width:42px;\n height:42px;\n border-radius:50%;\n background:#188d78;\n color:#fff;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-review-top strong {display:block;color:#2f6bd7;}\n#rio-chat .rio-routepage-v2 .rio-review-top span {display:block;color:#6d6d80;font-size:13px;}\n#rio-chat .rio-routepage-v2 .rio-review-stars {\n display:flex;\n align-items:center;\n gap:14px;\n margin:14px 0 10px;\n}\n#rio-chat .rio-routepage-v2 .rio-review-stars span {color:#fbbc04;letter-spacing:1px;}\n#rio-chat .rio-routepage-v2 .rio-review-stars small {color:#6d6d80;}\n#rio-chat .rio-routepage-v2 .rio-price-single {\n padding:24px 18px;\n border:0;\n border-radius:17px;\n background:#21175b;\n color:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single h2,\n#rio-chat .rio-routepage-v2 .rio-price-single p,\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-single-kicker {\n color:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-single-kicker::before {background:#f28c00;}\n#rio-chat .rio-routepage-v2 .rio-plan-card {\n color:#1a1a2e;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-card.is-selected {\n border:2px solid #f28c00;\n background:#fff8ef;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-badge {\n display:inline-flex;\n margin-bottom:9px;\n padding:5px 10px;\n border-radius:999px;\n background:#f28c00;\n color:#fff;\n font-size:10px;\n font-weight:900;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-price {\n display:block;\n margin:7px 0 5px;\n color:#352783;\n font-size:34px;\n line-height:1;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-card small {\n display:block;\n margin:0 0 14px;\n color:#6d6d80;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta {\n padding:24px 18px;\n border:1px solid #f7d5a5;\n border-radius:17px;\n background:#fff8ef;\n text-align:center;\n}\n#rio-chat .rio-routepage-v2 .rio-single-bottom {\n position:fixed;\n left:0;\n right:0;\n bottom:0;\n z-index:70;\n background:#fff;\n border-top:1px solid #eee;\n box-shadow:0 -6px 18px rgba(53,39,131,.07);\n}\n#rio-chat .rio-routepage-v2 .rio-single-bottom-inner {\n width:min(620px,100%);\n margin:0 auto;\n padding:13px 20px calc(19px + env(safe-area-inset-bottom));\n display:grid;\n gap:9px;\n}\n#rio-chat .rio-routepage-v2 .rio-single-bottom-copy {display:none;}\n#rio-chat .rio-routepage-v2 .rio-single-bottom-button {\n display:flex;\n width:100%;\n min-height:52px;\n font-size:16px;\n}\n@media(min-width:640px){\n #rio-chat .rio-routepage-v2 .rio-single-route {--rio-rp-pad:36px;padding-top:44px;}\n}\n@media(min-width:768px){\n #rio-chat.rio-route-open,\n #rio-chat.rio-toont-route {\n overflow:visible;\n }\n #rio-chat .rio-routepop:not([hidden]) {\n position:static !important;\n inset:auto !important;\n z-index:auto !important;\n display:block !important;\n width:100% !important;\n max-width:none !important;\n min-height:0;\n padding:0 !important;\n overflow:visible !important;\n background:#f3f0fb !important;\n backdrop-filter:none !important;\n }\n #rio-chat .rio-routepop-shell {\n width:100% !important;\n max-width:none !important;\n margin:0;\n }\n #rio-chat .rio-routepop .rio-resultaat {\n margin:0 !important;\n border-radius:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-headbar {\n padding:14px clamp(28px,5vw,72px);\n }\n #rio-chat .rio-routepage-v2 .rio-single-route {\n width:min(1180px,calc(100% - 48px));\n max-width:1180px;\n padding:54px 0 148px;\n gap:34px;\n background:transparent;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section {\n border-radius:0;\n background:#fff;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero {\n display:grid;\n grid-template-columns:minmax(0,1fr) minmax(320px,380px);\n gap:18px 42px;\n align-items:start;\n padding:42px;\n border-radius:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-single-kicker,\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-single-title,\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-single-lead,\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-told-card,\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-recognition-card,\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-parent-emotion-card {\n grid-column:1;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-guide-card {\n grid-column:2;\n grid-row:1 / span 6;\n }\n #rio-chat .rio-routepage-v2 .rio-single-title {\n max-width:720px;\n font-size:46px;\n line-height:1.08;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section h2 {font-size:36px;}\n #rio-chat .rio-routepage-v2 .rio-single-section h3 {font-size:25px;}\n #rio-chat .rio-routepage-v2 .rio-single-lead,\n #rio-chat .rio-routepage-v2 .rio-single-section p {\n max-width:65ch;\n font-size:17px;\n line-height:1.7;\n }\n #rio-chat .rio-routepage-v2 .rio-told-card,\n #rio-chat .rio-routepage-v2 .rio-recognition-card,\n #rio-chat .rio-routepage-v2 .rio-parent-emotion-card {\n max-width:720px;\n }\n #rio-chat .rio-routepage-v2 .rio-bridge-card {\n padding:38px 42px;\n border:0;\n border-radius:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow {\n display:grid;\n grid-template-columns:minmax(0,420px) minmax(0,1fr);\n gap:0 34px;\n border-radius:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-single-kicker,\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > h2,\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-meta,\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-intro {\n grid-column:1;\n padding-left:26px;\n padding-right:26px;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-single-kicker {padding-top:26px;}\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > h2 {font-size:31px;}\n #rio-chat .rio-routepage-v2 .rio-workshop-image {\n grid-column:1;\n margin:26px;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-image img {height:250px;}\n #rio-chat .rio-routepage-v2 .rio-workshop-stepper {\n grid-column:2;\n grid-row:1 / span 6;\n align-self:stretch;\n padding:26px 26px 26px 0;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-route-button {\n grid-column:1 / -1;\n margin:0 26px 26px;\n }\n #rio-chat .rio-routepage-v2 .rio-understand-block {\n display:grid;\n grid-template-columns:minmax(0,1fr) minmax(320px,380px);\n gap:20px 42px;\n align-items:start;\n padding:42px;\n border-radius:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-understand-block > .rio-single-kicker,\n #rio-chat .rio-routepage-v2 .rio-understand-block > h2,\n #rio-chat .rio-routepage-v2 .rio-understand-block > p,\n #rio-chat .rio-routepage-v2 .rio-understand-block > .rio-orange-line {\n grid-column:1;\n }\n #rio-chat .rio-routepage-v2 .rio-understand-image {\n grid-column:2;\n grid-row:1 / span 4;\n margin:0;\n border-radius:20px;\n }\n #rio-chat .rio-routepage-v2 .rio-understand-image img {height:420px;}\n #rio-chat .rio-routepage-v2 .rio-understand-card {\n grid-column:1;\n max-width:720px;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-compact {\n grid-column:1 / -1;\n display:grid;\n grid-template-columns:minmax(0,.7fr) minmax(0,1fr);\n gap:10px 28px;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-compact h3,\n #rio-chat .rio-routepage-v2 .rio-cycle-compact > p,\n #rio-chat .rio-routepage-v2 .rio-cycle-callout {\n grid-column:1;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-steps {\n grid-column:2;\n grid-row:1 / span 3;\n margin:0;\n }\n #rio-chat .rio-routepage-v2 .rio-app-single {\n display:grid;\n grid-template-columns:minmax(0,.72fr) minmax(430px,1fr);\n gap:14px 42px;\n align-items:center;\n margin-left:0;\n margin-right:0;\n padding:56px 42px;\n border-radius:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-app-single > .rio-single-kicker,\n #rio-chat .rio-routepage-v2 .rio-app-single > h2,\n #rio-chat .rio-routepage-v2 .rio-app-single > p,\n #rio-chat .rio-routepage-v2 .rio-app-single > .rio-store-buttons,\n #rio-chat .rio-routepage-v2 .rio-app-single > .rio-app-checks,\n #rio-chat .rio-routepage-v2 .rio-app-single > .rio-app-quote,\n #rio-chat .rio-routepage-v2 .rio-app-single > .rio-meditation-extra {\n grid-column:1;\n }\n #rio-chat .rio-routepage-v2 .rio-app-single > .rio-mockup-row {\n grid-column:2;\n grid-row:1 / span 7;\n }\n #rio-chat .rio-routepage-v2 .rio-app-single > .rio-app-tiles {\n grid-column:1 / -1;\n }\n #rio-chat .rio-routepage-v2 .rio-mockup-row {min-height:460px;}\n #rio-chat .rio-routepage-v2 .rio-single-phone.is-main {\n width:270px;\n height:350px;\n top:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-phone.is-left {\n width:220px;\n height:290px;\n left:20px;\n top:120px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-phone.is-right {\n width:220px;\n height:292px;\n right:18px;\n top:122px;\n }\n #rio-chat .rio-routepage-v2 .rio-floating-note.is-expert {left:34px;bottom:42px;}\n #rio-chat .rio-routepage-v2 .rio-floating-note.is-week {right:28px;top:24px;}\n #rio-chat .rio-routepage-v2 .rio-app-tiles {\n grid-template-columns:repeat(3,minmax(0,1fr));\n gap:14px;\n margin-top:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-app-tile img {height:118px;}\n #rio-chat .rio-routepage-v2 .rio-proof-single,\n #rio-chat .rio-routepage-v2 .rio-reviews-single,\n #rio-chat .rio-routepage-v2 .rio-price-single,\n #rio-chat .rio-routepage-v2 .rio-final-cta {\n padding:42px;\n border-radius:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-single {\n display:grid;\n grid-template-columns:minmax(0,1fr) minmax(320px,420px);\n gap:16px 40px;\n align-items:start;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-single > .rio-single-kicker,\n #rio-chat .rio-routepage-v2 .rio-proof-single > h2,\n #rio-chat .rio-routepage-v2 .rio-proof-single > p,\n #rio-chat .rio-routepage-v2 .rio-proof-single > .rio-pro-list,\n #rio-chat .rio-routepage-v2 .rio-proof-single > .rio-proof-stats {\n grid-column:1;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-group {\n grid-column:2;\n grid-row:1 / span 4;\n margin:0;\n }\n #rio-chat .rio-routepage-v2 .rio-pro-list {\n grid-template-columns:repeat(2,minmax(0,1fr));\n margin-top:8px;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-stats {\n grid-template-columns:repeat(3,minmax(0,1fr));\n }\n #rio-chat .rio-routepage-v2 .rio-reviews-single {\n display:grid;\n grid-template-columns:repeat(2,minmax(0,1fr));\n gap:18px;\n }\n #rio-chat .rio-routepage-v2 .rio-reviews-single > .rio-single-kicker,\n #rio-chat .rio-routepage-v2 .rio-reviews-single > h2 {\n grid-column:1 / -1;\n }\n #rio-chat .rio-routepage-v2 .rio-google-review {margin-top:0;}\n #rio-chat .rio-routepage-v2 .rio-price-single {\n display:grid;\n grid-template-columns:minmax(0,.7fr) minmax(0,1fr);\n gap:14px 34px;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single > .rio-single-kicker,\n #rio-chat .rio-routepage-v2 .rio-price-single > h2,\n #rio-chat .rio-routepage-v2 .rio-price-single > p {\n grid-column:1;\n }\n #rio-chat .rio-routepage-v2 .rio-plan-list {\n grid-column:2;\n grid-row:1 / span 4;\n }\n #rio-chat .rio-routepage-v2 .rio-single-bottom-inner {\n width:min(1180px,calc(100% - 48px));\n grid-template-columns:minmax(0,1fr) auto;\n align-items:center;\n padding:13px 0 calc(13px + env(safe-area-inset-bottom));\n }\n #rio-chat .rio-routepage-v2 .rio-single-bottom-copy {\n display:grid;\n gap:2px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-bottom-copy strong {\n color:#352783;\n font-size:15px;\n font-weight:900;\n }\n #rio-chat .rio-routepage-v2 .rio-single-bottom-copy small {\n color:#6d6d80;\n font-size:12px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-bottom-button {\n width:auto;\n min-width:320px;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepop:not([hidden]) {\n position:fixed !important;\n inset:0 !important;\n z-index:999999 !important;\n display:block !important;\n width:100vw !important;\n max-width:100vw !important;\n min-height:100vh;\n padding:0 !important;\n overflow-y:auto !important;\n overflow-x:hidden !important;\n background:#f3f0fb !important;\n backdrop-filter:none !important;\n }\n #rio-chat .rio-routepop-shell,\n #rio-chat .rio-resultaat.rio-routepage.rio-routepage-v2 {\n width:100vw !important;\n max-width:100vw !important;\n }\n #rio-chat .rio-routepage-v2 .rio-route-brand-sub {display:none;}\n #rio-chat .rio-routepage-v2 .rio-route-button-compact {\n padding:0 13px;\n font-size:12px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section h2 {font-size:24px;}\n #rio-chat .rio-routepage-v2 .rio-guide-copy h2 {font-size:20px;}\n #rio-chat .rio-routepage-v2 .rio-workshop-step-head {\n grid-template-columns:34px minmax(0,1fr);\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-open-label {\n grid-column:2;\n justify-self:start;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-step-body {\n padding-left:0;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single {\n margin-left:calc(-1 * var(--rio-rp-pad));\n margin-right:calc(-1 * var(--rio-rp-pad));\n border-radius:0;\n }\n}\n/* Routepagina V6: dichter op de aangeleverde routepagina.html */\n#rio-chat .rio-routepage-v2 .rio-workshop-step-body {\n display:block !important;\n}\n#rio-chat.rio-toont-route > .rio-hero {\n display:none !important;\n}\n#rio-chat.rio-toont-route {\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-open-label,\n#rio-chat .rio-routepage-v2 .rio-step-next {\n display:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-head {\n cursor:default;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step {\n position:relative;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step:not(:last-child)::after {\n content:\"\";\n position:absolute;\n left:13px;\n top:46px;\n bottom:6px;\n width:2px;\n background:#ece9f9;\n}\n#rio-chat .rio-routepage-v2 .rio-result-step {\n margin-top:8px;\n padding:14px;\n border:1px solid #cfead1;\n border-radius:15px;\n background:#f2faf3;\n}\n#rio-chat .rio-routepage-v2 .rio-result-step .rio-workshop-step-head {\n border-top:0;\n padding-top:0;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-cta {\n display:flex;\n margin:0 18px 18px;\n}\n#rio-chat .rio-routepage-v2 .rio-included-single {\n padding-top:22px;\n border-top:2px solid #cec6f8;\n}\n#rio-chat .rio-routepage-v2 .rio-included-single h2 {\n margin:0 0 8px;\n color:#352783;\n font-size:22px;\n font-weight:900;\n line-height:1.25;\n}\n#rio-chat .rio-routepage-v2 .rio-included-list {\n display:grid;\n margin-top:14px;\n}\n#rio-chat .rio-routepage-v2 .rio-included-row {\n display:grid;\n gap:3px;\n padding:12px 0;\n border-top:1px solid #eee;\n}\n#rio-chat .rio-routepage-v2 .rio-included-row strong {\n color:#352783;\n font-size:15px;\n font-weight:900;\n line-height:1.35;\n}\n#rio-chat .rio-routepage-v2 .rio-included-row span {\n color:#4a4a5c;\n font-size:13px;\n line-height:1.5;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single {\n padding-top:22px;\n border-top:2px solid #cec6f8;\n border-radius:0;\n background:#fff;\n color:#22222c;\n text-align:center;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single h2 {\n margin:0 0 8px;\n color:#352783;\n font-size:22px;\n font-weight:900;\n line-height:1.25;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single > p {\n margin:0 0 18px;\n color:#4a4a5c;\n font-size:14px;\n line-height:1.6;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-plan-list {\n display:grid;\n gap:11px;\n text-align:left;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row {\n overflow:hidden;\n padding:0;\n border:1px solid #dddde6;\n border-radius:13px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row.is-selected {\n border:2.5px solid #f28c00;\n background:#fff8ef;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row .rio-plan-badge {\n display:block;\n margin:0;\n padding:6px 10px;\n border-radius:0;\n background:#f28c00;\n color:#fff;\n text-align:center;\n font-size:10px;\n font-weight:900;\n letter-spacing:1px;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row-body {\n display:grid;\n grid-template-columns:22px minmax(0,1fr) auto;\n gap:13px;\n align-items:center;\n padding:14px 16px;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-radio {\n display:grid;\n place-items:center;\n width:20px;\n height:20px;\n border:2px solid #c8c8d4;\n border-radius:50%;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-radio.is-selected {\n border-color:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-radio.is-selected::after {\n content:\"\";\n width:10px;\n height:10px;\n border-radius:50%;\n background:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row-copy strong {\n display:block;\n color:#352783;\n font-size:15px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row-copy span {\n display:block;\n margin-top:3px;\n color:#6d6d80;\n font-size:12px;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row-price {\n text-align:right;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row-price strong {\n display:block;\n color:#352783;\n font-size:20px;\n font-weight:900;\n line-height:1;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row.is-selected .rio-plan-row-price strong {\n color:#b96a00;\n font-size:23px;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row-price span {\n display:block;\n margin-top:3px;\n color:#6d6d80;\n font-size:11px;\n}\n#rio-chat .rio-routepage-v2 .rio-pricing-main-cta {\n display:flex;\n margin-top:14px;\n min-height:54px;\n font-size:17px;\n}\n#rio-chat .rio-routepage-v2 .rio-payment-safe {\n display:flex;\n align-items:center;\n justify-content:center;\n gap:8px;\n margin-top:12px;\n color:#352783;\n font-size:14px;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-payment-safe::before {\n content:\"\";\n width:15px;\n height:15px;\n border:2px solid #352783;\n border-radius:3px;\n}\n#rio-chat .rio-routepage-v2 .rio-payment-methods {\n display:flex;\n flex-wrap:wrap;\n justify-content:center;\n gap:7px;\n margin-top:12px;\n}\n#rio-chat .rio-routepage-v2 .rio-payment-methods span {\n padding:5px 10px;\n border:1px solid #dddde6;\n border-radius:6px;\n color:#4a4a5c;\n font-size:10px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-pricing-perks {\n display:grid;\n gap:9px;\n margin:18px 0 0;\n padding:16px 0 0;\n border-top:1px solid #eee;\n list-style:none;\n text-align:left;\n}\n@media(min-width:768px){\n #rio-chat .rio-routepop:not([hidden]) {\n background:#fff !important;\n }\n #rio-chat .rio-resultaat.rio-routepage.rio-routepage-v2 {\n background:#fff;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route {\n width:min(1240px,calc(100% - 64px));\n max-width:1240px;\n padding:54px 0 148px;\n background:#fff;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section {\n background:transparent;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero,\n #rio-chat .rio-routepage-v2 .rio-bridge-card,\n #rio-chat .rio-routepage-v2 .rio-understand-block,\n #rio-chat .rio-routepage-v2 .rio-proof-single,\n #rio-chat .rio-routepage-v2 .rio-reviews-single,\n #rio-chat .rio-routepage-v2 .rio-included-single,\n #rio-chat .rio-routepage-v2 .rio-price-single,\n #rio-chat .rio-routepage-v2 .rio-final-cta {\n border-radius:0;\n background:transparent;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero {\n padding:42px 0 12px;\n }\n #rio-chat .rio-routepage-v2 .rio-bridge-card,\n #rio-chat .rio-routepage-v2 .rio-proof-single,\n #rio-chat .rio-routepage-v2 .rio-reviews-single,\n #rio-chat .rio-routepage-v2 .rio-included-single,\n #rio-chat .rio-routepage-v2 .rio-price-single {\n padding-left:0;\n padding-right:0;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow {\n grid-template-columns:minmax(0,430px) minmax(0,1fr);\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-step-body {\n padding:0 0 20px 46px;\n }\n #rio-chat .rio-routepage-v2 .rio-understand-block {\n padding-top:42px;\n padding-bottom:42px;\n }\n #rio-chat .rio-routepage-v2 .rio-app-single {\n margin-left:calc(50% - 50vw);\n margin-right:calc(50% - 50vw);\n padding-left:max(42px,calc((100vw - 1240px) / 2));\n padding-right:max(42px,calc((100vw - 1240px) / 2));\n border-radius:0;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-stats {\n margin-top:8px;\n }\n #rio-chat .rio-routepage-v2 .rio-included-single {\n display:grid;\n grid-template-columns:minmax(0,.55fr) minmax(0,1fr);\n gap:10px 42px;\n }\n #rio-chat .rio-routepage-v2 .rio-included-single > h2,\n #rio-chat .rio-routepage-v2 .rio-included-single > p {\n grid-column:1;\n }\n #rio-chat .rio-routepage-v2 .rio-included-list {\n grid-column:2;\n grid-row:1 / span 3;\n margin-top:0;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single {\n display:block;\n max-width:760px;\n margin-left:auto;\n margin-right:auto;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-workshop-step:not(:last-child)::after {\n left:13px;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-step-head {\n grid-template-columns:34px minmax(0,1fr);\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-cta {\n margin:0 18px 18px;\n }\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve {\n position:relative;\n overflow:hidden;\n margin-top:22px;\n padding:22px 18px;\n border-radius:18px;\n background:linear-gradient(135deg,#141034 0%,#241a5b 55%,#352783 100%);\n color:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve::before {\n content:\"\";\n position:absolute;\n left:18px;\n right:18px;\n top:50%;\n height:2px;\n background:linear-gradient(90deg,transparent,#b9aaf2,transparent);\n transform:translateY(-50%);\n opacity:.75;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-copy {\n position:relative;\n z-index:1;\n max-width:360px;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve h3 {\n margin:0 0 8px;\n color:#fff;\n font-size:22px;\n font-weight:900;\n line-height:1.18;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve p {\n margin:0;\n color:#ddd7ff;\n font-size:14px;\n line-height:1.55;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-steps {\n position:relative;\n z-index:1;\n display:grid;\n grid-template-columns:repeat(4,minmax(0,1fr));\n gap:14px;\n margin:26px 0 0;\n padding:0;\n list-style:none;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step {\n display:grid;\n justify-items:center;\n gap:6px;\n text-align:center;\n transform:translateY(var(--curve-y,0));\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-1 {--curve-y:18px;}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-2 {--curve-y:-10px;}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-3 {--curve-y:22px;}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-4 {--curve-y:-4px;}\n#rio-chat .rio-routepage-v2 .rio-change-curve-dot {\n display:grid;\n place-items:center;\n width:46px;\n height:46px;\n border-radius:50%;\n background:#5a4cb1;\n color:#fff;\n font-size:15px;\n font-weight:900;\n box-shadow:0 0 0 7px rgba(255,255,255,.06);\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-1 .rio-change-curve-dot {\n background:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step strong {\n color:#fff;\n font-size:13px;\n font-weight:900;\n line-height:1.25;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step small {\n color:#c8c0ef;\n font-size:11px;\n line-height:1.35;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-note {\n position:relative;\n z-index:1;\n margin:30px 0 0 auto !important;\n max-width:360px !important;\n color:#f6c9ff !important;\n font-size:14px !important;\n font-weight:800;\n line-height:1.45 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-guide-mockup img[src*=\"opvoedapp-professionals-eerste-rij\"] {\n width:100%;\n max-height:260px;\n}\n/* Routepagina V7: desktop volledige pagina, mobiel blijft mobiel */\n@media(min-width:768px){\n #rio-chat.rio-toont-route {\n width:100vw;\n margin-left:calc(50% - 50vw);\n min-height:100vh;\n background:#fff;\n }\n #rio-chat .rio-routepop:not([hidden]) {\n width:100vw !important;\n max-width:none !important;\n margin-left:calc(50% - 50vw);\n background:#fff !important;\n }\n #rio-chat .rio-routepop-shell,\n #rio-chat .rio-resultaat.rio-routepage.rio-routepage-v2 {\n width:100vw !important;\n max-width:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-headbar {\n padding-left:clamp(32px,7vw,112px);\n padding-right:clamp(32px,7vw,112px);\n }\n #rio-chat .rio-routepage-v2 .rio-single-route {\n width:100%;\n max-width:none;\n padding:54px 0 148px;\n gap:0;\n background:#fff;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section {\n width:min(1240px,calc(100% - 96px));\n max-width:1240px;\n margin-left:auto;\n margin-right:auto;\n margin-bottom:44px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-app-single {\n width:100%;\n max-width:none;\n margin-left:0;\n margin-right:0;\n padding-left:max(48px,calc((100vw - 1240px) / 2));\n padding-right:max(48px,calc((100vw - 1240px) / 2));\n }\n #rio-chat .rio-routepage-v2 .rio-price-single,\n #rio-chat .rio-routepage-v2 .rio-final-cta {\n width:min(760px,calc(100% - 96px));\n max-width:760px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-bottom-inner {\n width:min(1240px,calc(100% - 96px));\n }\n}\n@media(max-width:767px){\n #rio-chat.rio-toont-route {\n width:100vw;\n margin-left:calc(50% - 50vw);\n }\n #rio-chat .rio-routepage-v2 .rio-single-route {\n width:min(620px,100%);\n max-width:620px;\n margin-left:auto;\n margin-right:auto;\n }\n}\n/* Routepagina V8: desktop is een echte pagina, mobiel blijft de aangeleverde mobiele vorm */\n@media(min-width:768px){\n #rio-chat.rio-toont-route {\n max-width:none !important;\n border-radius:0 !important;\n box-shadow:none !important;\n overflow:visible !important;\n }\n #rio-chat.rio-toont-route .rio-inhoud,\n #rio-chat.rio-toont-route .rio-assistent,\n #rio-chat.rio-toont-route .rio-chatvenster,\n #rio-chat.rio-toont-route .rio-berichten {\n width:100% !important;\n max-width:none !important;\n padding-left:0 !important;\n padding-right:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-headbar {\n position:sticky;\n top:0;\n z-index:80;\n width:100%;\n background:rgba(255,255,255,.96);\n backdrop-filter:saturate(120%) blur(10px);\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section {\n width:min(1280px,calc(100% - 104px));\n max-width:1280px;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero {\n min-height:calc(100vh - 116px);\n align-content:center;\n padding-top:54px;\n padding-bottom:54px;\n }\n #rio-chat .rio-routepage-v2 .rio-told-card {\n max-width:760px;\n }\n #rio-chat .rio-routepage-v2 .rio-told-story {\n grid-template-columns:42px minmax(0,1fr);\n gap:16px;\n }\n #rio-chat .rio-routepage-v2 .rio-told-mark {\n width:42px;\n height:42px;\n font-size:36px;\n }\n #rio-chat .rio-routepage-v2 .rio-told-quote {\n font-size:17px;\n }\n #rio-chat .rio-routepage-v2 .rio-guide-card {\n align-self:center;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve {\n display:grid;\n grid-template-columns:minmax(240px,.46fr) minmax(0,1fr);\n gap:20px 28px;\n align-items:center;\n margin-top:28px;\n padding:32px 34px 34px;\n border-radius:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve::before {\n left:calc(46% + 42px);\n right:40px;\n top:52%;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-copy {\n max-width:420px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve h3 {\n font-size:28px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-steps {\n grid-column:2;\n margin:0;\n min-height:170px;\n align-items:center;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-dot {\n width:62px;\n height:62px;\n font-size:18px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step strong {\n font-size:15px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step small {\n font-size:12px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-note {\n grid-column:2;\n margin-top:-4px !important;\n margin-right:8px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-app-overview-figure {\n min-height:0;\n margin:0;\n overflow:visible;\n display:flex;\n align-items:center;\n justify-content:center;\n }\n #rio-chat .rio-routepage-v2 .rio-app-overview-img {\n display:block;\n width:min(620px,100%);\n height:auto;\n object-fit:contain;\n filter:drop-shadow(0 24px 34px rgba(53,39,131,.14));\n }\n #rio-chat .rio-routepage-v2 .rio-app-overview-figure figcaption {\n position:absolute;\n left:auto;\n right:24px;\n bottom:28px;\n transform:none;\n width:min(260px,46%);\n padding:12px 14px;\n border-radius:14px;\n background:#fff;\n color:#352783;\n font-size:12px;\n font-weight:900;\n line-height:1.35;\n box-shadow:0 12px 30px rgba(53,39,131,.13);\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-single-headbar {\n position:sticky;\n top:0;\n z-index:80;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route {\n background:#fff;\n }\n #rio-chat .rio-routepage-v2 .rio-told-story {\n grid-template-columns:30px minmax(0,1fr);\n gap:10px;\n }\n #rio-chat .rio-routepage-v2 .rio-told-mark {\n width:30px;\n height:30px;\n font-size:26px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve::before {\n left:40px;\n right:auto;\n top:112px;\n bottom:72px;\n width:2px;\n height:auto;\n background:linear-gradient(180deg,#b9aaf2,transparent);\n transform:none;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-steps {\n grid-template-columns:1fr;\n gap:13px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step {\n grid-template-columns:46px minmax(0,1fr);\n justify-items:start;\n text-align:left;\n transform:none;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step small {\n grid-column:2;\n margin-top:-4px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-note {\n margin-top:18px !important;\n max-width:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-app-overview-figure {\n min-height:0;\n margin:16px 0 18px;\n overflow:visible;\n }\n #rio-chat .rio-routepage-v2 .rio-app-overview-img {\n display:block;\n width:100%;\n height:auto;\n object-fit:contain;\n filter:drop-shadow(0 16px 24px rgba(53,39,131,.12));\n }\n #rio-chat .rio-routepage-v2 .rio-app-overview-figure figcaption {\n position:static;\n transform:none;\n width:auto;\n margin:10px 8px 0;\n padding:10px 12px;\n border-radius:12px;\n background:#fff;\n color:#352783;\n font-size:11px;\n font-weight:900;\n line-height:1.35;\n box-shadow:0 8px 20px rgba(53,39,131,.10);\n }\n}\n/* Routepagina V9: verandering-lijn in verhouding */\n#rio-chat .rio-routepage-v2 .rio-change-curve {\n isolation:isolate;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve::before {\n content:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-visual {\n position:relative;\n z-index:1;\n min-height:238px;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-line {\n position:absolute;\n inset:18px 3% 58px;\n width:94%;\n height:calc(100% - 76px);\n overflow:visible;\n pointer-events:none;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-line path {\n fill:none;\n stroke-linecap:round;\n stroke-linejoin:round;\n vector-effect:non-scaling-stroke;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-line-base {\n stroke:rgba(255,255,255,.16);\n stroke-width:12;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-line-accent {\n stroke:#d8c8ff;\n stroke-width:3.4;\n stroke-dasharray:12 14;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-steps {\n position:absolute;\n inset:0;\n display:block;\n min-height:0;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step {\n position:absolute;\n display:grid;\n width:150px;\n justify-items:center;\n gap:7px;\n text-align:center;\n transform:translateX(-50%);\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-1 {\n left:8%;\n top:56%;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-2 {\n left:32%;\n top:13%;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-3 {\n left:62%;\n top:65%;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-4 {\n left:91%;\n top:25%;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-dot {\n border:1px solid rgba(255,255,255,.12);\n box-shadow:0 0 0 8px rgba(255,255,255,.07), 0 16px 26px rgba(0,0,0,.18);\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-note {\n padding:12px 15px;\n border:1px solid rgba(246,201,255,.22);\n border-radius:14px;\n background:rgba(255,255,255,.07);\n}\n#rio-chat .rio-routepage-v2 .rio-guide-mockup-transparent {\n display:flex;\n align-items:center;\n justify-content:center;\n min-height:0;\n padding:0;\n background:transparent;\n}\n#rio-chat .rio-routepage-v2 .rio-guide-mockup-transparent img {\n display:block;\n width:100%;\n max-height:320px;\n object-fit:contain;\n filter:drop-shadow(0 22px 34px rgba(53,39,131,.16));\n}\n#rio-chat .rio-routepage-v2 .rio-store-buttons {\n align-items:center;\n}\n#rio-chat .rio-routepage-v2 .rio-store-buttons .rio-store-badge {\n display:flex;\n align-items:center;\n justify-content:center;\n min-height:0;\n padding:0;\n border:0;\n border-radius:0;\n background:transparent;\n box-shadow:none;\n}\n#rio-chat .rio-routepage-v2 .rio-store-badge img {\n display:block;\n width:auto;\n height:44px;\n max-width:160px;\n object-fit:contain;\n}\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-change-curve {\n grid-template-columns:minmax(260px,.38fr) minmax(620px,1fr);\n gap:18px 36px;\n align-items:center;\n padding:38px 42px 34px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-copy {\n align-self:center;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-visual {\n grid-column:2;\n grid-row:1 / span 2;\n min-height:270px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-line {\n inset:12px 2% 72px;\n width:96%;\n height:calc(100% - 84px);\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-note {\n grid-column:1;\n max-width:420px !important;\n margin:14px 0 0 !important;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-change-curve {\n padding:24px 18px 22px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-copy {\n max-width:none;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-visual {\n min-height:520px;\n margin-top:18px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-line {\n inset:14px auto 36px 21px;\n width:82px;\n height:calc(100% - 50px);\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-line-base {\n stroke-width:18;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-line-accent {\n stroke-width:4;\n stroke-dasharray:9 12;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-steps {\n display:block;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step {\n grid-template-columns:54px minmax(0,1fr);\n width:100%;\n justify-items:start;\n align-items:center;\n gap:10px 14px;\n text-align:left;\n transform:none;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step.is-1 {\n left:0;\n top:22px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step.is-2 {\n left:0;\n top:150px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step.is-3 {\n left:0;\n top:292px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step.is-4 {\n left:0;\n top:422px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-dot {\n grid-row:1 / span 2;\n width:54px;\n height:54px;\n font-size:17px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step strong {\n align-self:end;\n font-size:15px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step small {\n grid-column:2;\n align-self:start;\n margin-top:-6px;\n font-size:12px;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-note {\n margin-top:6px !important;\n max-width:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-store-badge img {\n height:40px;\n max-width:145px;\n }\n #rio-chat .rio-routepage-v2 .rio-guide-mockup-transparent img {\n max-height:240px;\n }\n}\n/* Routepagina V10: inzichtdiagrammen en klikbare prijzen */\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual {\n margin-top:18px;\n padding:14px;\n border:1px solid #e2dcfb;\n border-radius:18px;\n background:#fff;\n box-shadow:0 10px 28px rgba(53,39,131,.06);\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-label {\n display:inline-flex;\n margin-bottom:10px;\n padding:4px 10px;\n border-radius:999px;\n background:#f3efff;\n color:#352783;\n font-size:11px;\n font-weight:900;\n letter-spacing:.5px;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-meter {\n position:relative;\n display:grid;\n gap:6px;\n overflow:hidden;\n padding:6px;\n border-radius:16px;\n background:#f8f6ff;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band {\n display:grid;\n gap:2px;\n min-height:48px;\n padding:10px 14px 10px 52px;\n border-radius:12px;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band strong {\n color:#15112b;\n font-size:13px;\n line-height:1.2;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band span {\n color:#5f5b78;\n font-size:11px;\n line-height:1.35;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band.is-high {\n background:#fff2df;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band.is-window {\n background:#eaf8ee;\n outline:2px solid rgba(20,160,118,.14);\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band.is-low {\n background:#f3efff;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-marker {\n position:absolute;\n left:22px;\n top:18px;\n width:16px;\n height:16px;\n border:3px solid #fff;\n border-radius:50%;\n background:#f28c00;\n box-shadow:0 0 0 6px rgba(242,140,0,.18), 0 10px 20px rgba(53,39,131,.16);\n animation:rioToleranceMove 5.5s ease-in-out infinite;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-marker.is-parent {\n background:#352783;\n box-shadow:0 0 0 6px rgba(53,39,131,.14), 0 10px 20px rgba(53,39,131,.16);\n animation-delay:.8s;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual > p {\n margin:10px 0 0;\n color:#4a4a5c;\n font-size:12px;\n line-height:1.45;\n}\n@keyframes rioToleranceMove {\n 0%,100% { transform:translateY(2px); }\n 42% { transform:translateY(67px); }\n 70% { transform:translateY(132px); }\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-compact {\n overflow:hidden;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-diagram {\n position:relative;\n min-height:260px;\n margin:6px 0 16px;\n border:1px solid #e2dcfb;\n border-radius:24px;\n background:radial-gradient(circle at 50% 48%,rgba(242,140,0,.16),transparent 31%), linear-gradient(145deg,#fff,#f7f3ff);\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-loop-line {\n position:absolute;\n inset:22px 28px;\n width:calc(100% - 56px);\n height:calc(100% - 44px);\n overflow:visible;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-loop-line path {\n fill:none;\n stroke:#cec6f8;\n stroke-width:5;\n stroke-linecap:round;\n stroke-linejoin:round;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node {\n position:absolute;\n display:grid;\n justify-items:center;\n gap:7px;\n width:150px;\n transform:translate(-50%,-50%);\n text-align:center;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node.is-1 {left:50%;top:18%;}\n#rio-chat .rio-routepage-v2 .rio-cycle-node.is-2 {left:77%;top:72%;}\n#rio-chat .rio-routepage-v2 .rio-cycle-node.is-3 {left:23%;top:72%;}\n#rio-chat .rio-routepage-v2 .rio-cycle-node span {\n display:grid;\n place-items:center;\n width:42px;\n height:42px;\n border:5px solid #fff;\n border-radius:50%;\n background:#352783;\n color:#fff;\n font-weight:900;\n box-shadow:0 12px 24px rgba(53,39,131,.14);\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node.is-1 span {\n background:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node strong {\n max-width:150px;\n color:#15112b;\n font-size:12px;\n line-height:1.25;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-center {\n position:absolute;\n left:50%;\n top:54%;\n display:grid;\n width:122px;\n height:122px;\n place-content:center;\n gap:3px;\n padding:12px;\n border-radius:50%;\n background:#fff;\n text-align:center;\n box-shadow:0 12px 30px rgba(53,39,131,.13);\n transform:translate(-50%,-50%);\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-center strong {\n color:#352783;\n font-size:15px;\n font-weight:900;\n line-height:1.1;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-center span {\n color:#6d6d80;\n font-size:11px;\n line-height:1.25;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row {\n cursor:pointer;\n transition:border-color .18s ease, background .18s ease, box-shadow .18s ease, transform .18s ease;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row:hover,\n#rio-chat .rio-routepage-v2 .rio-plan-row:focus-within {\n border-color:#b9aaf2;\n box-shadow:0 12px 28px rgba(53,39,131,.09);\n transform:translateY(-1px);\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row[aria-pressed=\"true\"] {\n border-color:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-choice-cta {\n display:inline-flex;\n align-items:center;\n justify-content:center;\n min-height:36px;\n padding:0 14px;\n border-radius:999px;\n background:#352783;\n color:#fff;\n font-size:12px;\n font-weight:900;\n text-decoration:none;\n white-space:nowrap;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row.is-selected .rio-plan-choice-cta {\n background:#f28c00;\n}\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-understand-card {\n display:grid;\n grid-template-columns:minmax(0,1fr) minmax(250px,.48fr);\n gap:4px 22px;\n align-items:start;\n }\n #rio-chat .rio-routepage-v2 .rio-understand-card h3,\n #rio-chat .rio-routepage-v2 .rio-understand-card > p {\n grid-column:1;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-visual {\n grid-column:2;\n grid-row:1 / span 2;\n margin-top:0;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-diagram {\n grid-column:2;\n grid-row:1 / span 2;\n margin:0;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-steps {\n grid-column:2;\n grid-row:3;\n margin:16px 0 0;\n }\n #rio-chat .rio-routepage-v2 .rio-plan-row-body {\n grid-template-columns:22px minmax(0,1fr) auto auto;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-cycle-diagram {\n min-height:290px;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node {\n width:116px;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node strong {\n font-size:11px;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-center {\n width:106px;\n height:106px;\n }\n #rio-chat .rio-routepage-v2 .rio-plan-row-body {\n grid-template-columns:22px minmax(0,1fr) auto;\n }\n #rio-chat .rio-routepage-v2 .rio-plan-choice-cta {\n grid-column:2 / -1;\n justify-self:start;\n margin-top:3px;\n }\n}\n@media(prefers-reduced-motion:reduce){\n #rio-chat .rio-routepage-v2 .rio-tolerance-marker {\n animation:none;\n transform:translateY(67px);\n }\n}\n/* Routepagina V11: Window of Tolerance centraal */\n#rio-chat .rio-routepage-v2 .rio-tolerance-row {\n display:grid;\n gap:16px;\n margin:18px 0;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-row > .rio-understand-card {\n display:block;\n max-width:none;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared {\n margin:0;\n border-color:#d8cff8;\n background:linear-gradient(180deg,#fff,#f8f5ff);\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-meter {\n min-height:318px;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-band {\n min-height:84px;\n padding-left:18px;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-legend {\n display:flex;\n flex-wrap:wrap;\n gap:8px;\n margin:0 0 11px;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-legend span {\n display:inline-flex;\n align-items:center;\n gap:6px;\n color:#4a4a5c;\n font-size:12px;\n font-weight:800;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-legend i {\n display:block;\n width:10px;\n height:10px;\n border-radius:50%;\n background:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-legend i.is-parent {\n background:#352783;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-marker {\n left:auto;\n right:22px;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-marker.is-parent {\n right:50px;\n}\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-understand-block > .rio-tolerance-row {\n grid-column:1 / -1;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-row {\n grid-template-columns:minmax(0,1fr) minmax(280px,340px) minmax(0,1fr);\n align-items:stretch;\n gap:22px;\n margin:24px 0 8px;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-row > .rio-understand-card,\n #rio-chat .rio-routepage-v2 .rio-tolerance-row > .rio-tolerance-visual {\n grid-column:auto;\n grid-row:auto;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-row > .rio-understand-card {\n min-height:100%;\n padding:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-row > .rio-understand-card h3,\n #rio-chat .rio-routepage-v2 .rio-tolerance-row > .rio-understand-card > p {\n grid-column:auto;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-tolerance-row {\n grid-template-columns:1fr;\n margin:18px 0 4px;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-row > .rio-understand-card,\n #rio-chat .rio-routepage-v2 .rio-tolerance-row > .rio-tolerance-visual {\n grid-column:auto;\n grid-row:auto;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-meter {\n min-height:294px;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-band {\n min-height:76px;\n }\n}\n/* Routepagina V12: slotblok als duidelijke afsluiter */\n#rio-chat .rio-routepage-v2 .rio-final-cta {\n position:relative;\n overflow:hidden;\n padding:34px 28px;\n border:0;\n border-radius:24px;\n background:linear-gradient(135deg,#141034 0%,#241a5b 58%,#352783 100%) !important;\n color:#fff;\n box-shadow:0 24px 50px rgba(53,39,131,.22);\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta::before {\n content:\"\";\n position:absolute;\n left:-90px;\n top:-90px;\n width:270px;\n height:270px;\n border-radius:50%;\n background:radial-gradient(circle,rgba(242,140,0,.34),transparent 68%);\n pointer-events:none;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta h2,\n#rio-chat .rio-routepage-v2 .rio-final-cta p,\n#rio-chat .rio-routepage-v2 .rio-final-cta .rio-route-button {\n position:relative;\n z-index:1;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta h2 {\n margin:0 0 12px;\n color:#fff;\n font-size:clamp(28px,4vw,46px);\n line-height:1.08;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta p {\n max-width:720px;\n margin:0 0 24px;\n color:#ddd7ff;\n font-size:17px;\n line-height:1.6;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta .rio-route-button {\n background:#f28c00;\n color:#fff;\n box-shadow:0 14px 30px rgba(242,140,0,.22);\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta .rio-route-button:hover {\n background:#d77900;\n}\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-final-cta {\n display:grid;\n grid-template-columns:minmax(0,1fr) auto;\n align-items:center;\n gap:18px 34px;\n padding:46px 52px;\n }\n #rio-chat .rio-routepage-v2 .rio-final-cta p {\n margin-bottom:0;\n }\n #rio-chat .rio-routepage-v2 .rio-final-cta .rio-route-button {\n grid-column:2;\n grid-row:1 / span 2;\n min-width:245px;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-final-cta {\n padding:30px 22px;\n }\n #rio-chat .rio-routepage-v2 .rio-final-cta .rio-route-button {\n width:100%;\n }\n}\n/* Routepagina V13: premium inzichtvisuals en gecentreerde desktop-flow */\n@media(min-width:768px){\n #rio-chat.rio-toont-route {\n display:block !important;\n }\n #rio-chat .rio-routepop-shell {\n margin-left:auto !important;\n margin-right:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route {\n display:flex !important;\n flex-direction:column !important;\n align-items:center !important;\n padding-top:34px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section {\n margin-left:auto !important;\n margin-right:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero {\n min-height:0 !important;\n align-content:start !important;\n }\n}\n#rio-chat .rio-routepage-v2 .rio-proof-single {\n background:linear-gradient(145deg,#f7f3ff 0%,#ffffff 72%) !important;\n border:1px solid #e3ddfb !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-row {\n align-items:center;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared {\n position:relative;\n overflow:hidden;\n padding:22px;\n border:1px solid rgba(206,198,248,.42);\n border-radius:30px;\n background:\n linear-gradient(135deg,#151136 0%,#241a5b 58%,#352783 100%);\n color:#fff;\n box-shadow:0 28px 58px -34px rgba(36,26,91,.65);\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared::before {\n content:\"\";\n position:absolute;\n inset:14px;\n border:1px solid rgba(255,255,255,.08);\n border-radius:24px;\n pointer-events:none;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-label {\n position:relative;\n z-index:1;\n margin-bottom:12px;\n background:#f28c00;\n color:#fff;\n box-shadow:0 10px 22px rgba(242,140,0,.2);\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-legend {\n position:relative;\n z-index:1;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-legend span {\n color:#e9e3ff;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-meter {\n position:relative;\n z-index:1;\n gap:9px;\n padding:12px;\n border:1px solid rgba(255,255,255,.12);\n border-radius:24px;\n background:rgba(255,255,255,.07);\n box-shadow:inset 0 1px 0 rgba(255,255,255,.08);\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-meter::before {\n content:\"\";\n position:absolute;\n right:44px;\n top:24px;\n bottom:24px;\n width:3px;\n border-radius:999px;\n background:linear-gradient(180deg,#f28c00 0%,#b9e8bb 50%,#cec6f8 100%);\n box-shadow:0 0 0 6px rgba(255,255,255,.06);\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band {\n position:relative;\n min-height:92px;\n padding:14px 98px 14px 16px;\n border:1px solid rgba(255,255,255,.1);\n border-radius:18px;\n box-shadow:0 14px 28px -24px rgba(0,0,0,.8);\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band strong {\n color:#fff;\n font-size:14px;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band span {\n color:rgba(255,255,255,.72);\n font-size:12px;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band.is-high {\n background:linear-gradient(135deg,rgba(242,140,0,.28),rgba(255,255,255,.06));\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band.is-window {\n background:linear-gradient(135deg,rgba(185,232,187,.28),rgba(255,255,255,.08));\n outline:1px solid rgba(185,232,187,.34);\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band.is-low {\n background:linear-gradient(135deg,rgba(206,198,248,.28),rgba(255,255,255,.06));\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-marker {\n z-index:3;\n display:inline-flex;\n align-items:center;\n justify-content:center;\n width:62px;\n height:30px;\n top:26px;\n left:auto;\n right:20px;\n border:1px solid rgba(255,255,255,.34);\n border-radius:999px;\n color:#fff;\n font-size:10px;\n font-weight:900;\n letter-spacing:.04em;\n text-transform:uppercase;\n box-shadow:0 14px 28px -18px rgba(0,0,0,.85);\n animation:rioToleranceMovePremium 6.2s ease-in-out infinite;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-marker.is-child {\n background:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-marker.is-parent {\n right:88px;\n background:#8476d6;\n animation-delay:.95s;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared > p {\n position:relative;\n z-index:1;\n margin-top:13px;\n color:#e5defb;\n font-size:13px;\n}\n@keyframes rioToleranceMovePremium {\n 0%,100% { transform:translateY(4px); }\n 38% { transform:translateY(104px); }\n 68% { transform:translateY(206px); }\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-diagram {\n position:relative;\n min-height:320px;\n border:1px solid rgba(206,198,248,.42);\n border-radius:30px;\n background:\n linear-gradient(135deg,#151136 0%,#21175b 62%,#352783 100%) !important;\n box-shadow:0 28px 58px -34px rgba(36,26,91,.65);\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-diagram::before {\n content:\"\";\n position:absolute;\n inset:14px;\n border:1px solid rgba(255,255,255,.08);\n border-radius:24px;\n pointer-events:none;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-loop-line {\n inset:28px 36px;\n width:calc(100% - 72px);\n height:calc(100% - 56px);\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-loop-line path {\n stroke:#d8c8ff;\n stroke-width:4.5;\n filter:drop-shadow(0 0 8px rgba(216,200,255,.22));\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node {\n width:164px;\n padding:12px 13px 13px;\n border:1px solid rgba(255,255,255,.28);\n border-radius:20px;\n background:rgba(255,255,255,.96);\n box-shadow:0 18px 36px -24px rgba(0,0,0,.88);\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node span {\n width:34px;\n height:34px;\n border:4px solid #fff;\n background:#352783;\n color:#fff;\n font-size:12px;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node.is-1 span {\n background:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node strong {\n color:#15112b;\n font-size:12.5px;\n line-height:1.2;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node small {\n display:block;\n max-width:138px;\n color:#615a78;\n font-size:10.5px;\n line-height:1.35;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-center {\n width:126px;\n height:126px;\n border:1px solid rgba(255,255,255,.25);\n background:#f28c00;\n color:#fff;\n box-shadow:0 20px 40px -22px rgba(0,0,0,.9);\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-center strong,\n#rio-chat .rio-routepage-v2 .rio-cycle-center span {\n color:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-center span {\n opacity:.86;\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared {\n padding:18px;\n border-radius:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-meter {\n border-radius:20px;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-meter::before {\n right:37px;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-band {\n min-height:86px;\n padding-right:86px;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-marker {\n width:54px;\n height:28px;\n right:14px;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-marker.is-parent {\n right:74px;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-diagram {\n min-height:360px;\n border-radius:24px;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-loop-line {\n inset:34px 22px;\n width:calc(100% - 44px);\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node {\n width:126px;\n padding:10px;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node strong {\n font-size:11px;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node small {\n display:none;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node.is-1 {top:16%;}\n #rio-chat .rio-routepage-v2 .rio-cycle-node.is-2 {left:76%;top:72%;}\n #rio-chat .rio-routepage-v2 .rio-cycle-node.is-3 {left:24%;top:72%;}\n #rio-chat .rio-routepage-v2 .rio-cycle-center {\n width:104px;\n height:104px;\n }\n}\n/* Routepagina V14: rustige kleurhiërarchie per blok */\n#rio-chat .rio-routepage-v2 .rio-single-hero {\n background:linear-gradient(180deg,#ffffff 0%,#fbf9ff 100%) !important;\n border:1px solid #eee9fb !important;\n}\n#rio-chat .rio-routepage-v2 .rio-bridge-card {\n background:linear-gradient(145deg,#fff8ef 0%,#ffffff 78%) !important;\n border:1px solid #f7d5a5 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-block {\n background:linear-gradient(180deg,#ffffff 0%,#faf8ff 100%) !important;\n border:1px solid #eee9fb !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single {\n background:linear-gradient(145deg,#f6f3ff 0%,#ffffff 68%) !important;\n border-top:1px solid #e5ddfb !important;\n border-bottom:1px solid #e5ddfb !important;\n}\n#rio-chat .rio-routepage-v2 .rio-reviews-single {\n background:#ffffff !important;\n border:1px solid #eee9fb !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single {\n background:linear-gradient(135deg,#171139 0%,#241a5b 62%,#352783 100%) !important;\n color:#fff !important;\n border:0 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single h2,\n#rio-chat .rio-routepage-v2 .rio-price-single p {\n color:#fff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single > p {\n color:#e1dbff !important;\n}\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-hero,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-bridge-card,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-understand-block,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-proof-single,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-reviews-single {\n box-shadow:0 24px 64px -52px rgba(36,26,91,.42);\n }\n}\n/* Routepagina V15: workshopmockup behoudt transparante achtergrond */\n#rio-chat .rio-routepage-v2 .rio-workshop-image {\n overflow:visible !important;\n border:0 !important;\n background:transparent !important;\n box-shadow:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image img {\n height:auto !important;\n max-height:360px !important;\n object-fit:contain !important;\n background:transparent !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image figcaption {\n margin-top:8px;\n padding:0 !important;\n background:transparent !important;\n color:#ddd6ff;\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-workshop-image img {\n max-height:300px !important;\n }\n}\n/* Routepagina V16: mobiele breedte strak binnen viewport */\n@media(max-width:767px){\n #rio-chat,\n #rio-chat.rio-toont-route,\n #rio-chat .rio-routepop:not([hidden]),\n #rio-chat .rio-routepop-shell,\n #rio-chat .rio-resultaat.rio-routepage.rio-routepage-v2,\n #rio-chat .rio-routepage-v2 .rio-single-route {\n width:100% !important;\n max-width:100% !important;\n min-width:0 !important;\n margin-left:0 !important;\n margin-right:0 !important;\n overflow-x:hidden !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-headbar {\n gap:10px !important;\n padding:12px 14px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-route-brand {\n flex:1 1 auto;\n min-width:0;\n gap:9px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-brand-copy {\n min-width:0;\n }\n #rio-chat .rio-routepage-v2 .rio-route-brand-main {\n font-size:16px;\n white-space:nowrap;\n }\n #rio-chat .rio-routepage-v2 .rio-route-logo {\n flex:0 0 38px;\n width:38px;\n height:38px;\n }\n #rio-chat .rio-routepage-v2 .rio-route-button-compact {\n flex:0 1 154px;\n min-width:0;\n min-height:40px;\n padding:0 10px;\n text-align:center;\n white-space:normal;\n font-size:11px;\n line-height:1.15;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route {\n padding:28px 20px 104px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section,\n #rio-chat .rio-routepage-v2 .rio-single-section {\n width:100% !important;\n max-width:100% !important;\n min-width:0 !important;\n padding-left:18px !important;\n padding-right:18px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero {\n padding-top:26px !important;\n padding-bottom:26px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-title {\n font-size:30px !important;\n line-height:1.12 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section h2 {\n font-size:25px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-told-card,\n #rio-chat .rio-routepage-v2 .rio-recognition-card,\n #rio-chat .rio-routepage-v2 .rio-parent-emotion-card,\n #rio-chat .rio-routepage-v2 .rio-guide-card,\n #rio-chat .rio-routepage-v2 .rio-told-copy {\n min-width:0 !important;\n max-width:100% !important;\n }\n #rio-chat .rio-routepage-v2 .rio-told-story {\n grid-template-columns:30px minmax(0,1fr) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-told-quote,\n #rio-chat .rio-routepage-v2 p,\n #rio-chat .rio-routepage-v2 h1,\n #rio-chat .rio-routepage-v2 h2,\n #rio-chat .rio-routepage-v2 h3,\n #rio-chat .rio-routepage-v2 strong,\n #rio-chat .rio-routepage-v2 span {\n max-width:100%;\n overflow-wrap:break-word;\n }\n #rio-chat .rio-routepage-v2 .rio-guide-mockup-transparent img,\n #rio-chat .rio-routepage-v2 .rio-workshop-image img,\n #rio-chat .rio-routepage-v2 .rio-app-overview-img,\n #rio-chat .rio-routepage-v2 .rio-proof-group img {\n max-width:100% !important;\n }\n}\n/* Routepagina V17: cirkelblok beter in verhouding */\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-cycle-compact {\n display:grid !important;\n grid-template-columns:minmax(280px,.42fr) minmax(0,1fr) !important;\n gap:14px 32px !important;\n align-items:start !important;\n padding:28px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-compact > h3 {\n grid-column:1 !important;\n grid-row:1 !important;\n margin:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-compact > p {\n grid-column:1 !important;\n grid-row:2 !important;\n margin:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-diagram {\n grid-column:2 !important;\n grid-row:1 / span 4 !important;\n margin:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-steps {\n grid-column:1 !important;\n grid-row:3 !important;\n margin:10px 0 0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-callout {\n grid-column:1 !important;\n grid-row:4 !important;\n margin-top:8px !important;\n }\n}\n/* Routepagina V18: mobiel minder krap en workshop zonder interne overflow */\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-single-route {\n padding-left:16px !important;\n padding-right:16px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section,\n #rio-chat .rio-routepage-v2 .rio-single-section {\n padding-left:16px !important;\n padding-right:16px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-title {\n font-size:28px !important;\n line-height:1.14 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-lead,\n #rio-chat .rio-routepage-v2 .rio-single-section p {\n font-size:15.5px !important;\n line-height:1.62 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-told-card,\n #rio-chat .rio-routepage-v2 .rio-recognition-card,\n #rio-chat .rio-routepage-v2 .rio-parent-emotion-card,\n #rio-chat .rio-routepage-v2 .rio-guide-card {\n padding:16px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-told-quote {\n font-size:15.5px !important;\n line-height:1.5 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow,\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > *,\n #rio-chat .rio-routepage-v2 .rio-workshop-stepper,\n #rio-chat .rio-routepage-v2 .rio-workshop-step {\n min-width:0 !important;\n max-width:100% !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow {\n overflow:hidden !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-image {\n margin-left:0 !important;\n margin-right:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-step-head {\n grid-template-columns:34px minmax(0,1fr) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-bullets {\n padding-left:16px !important;\n }\n}\n/* Routepagina V19: lichte premium blokken met paarse/oranje accenten */\n#rio-chat .rio-routepage-v2 .rio-single-section {\n background:#fff !important;\n border:1px solid #eee9fb !important;\n box-shadow:0 24px 58px -50px rgba(53,39,131,.42) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-section h2 {\n color:#352783 !important;\n letter-spacing:0 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-section h2::before {\n content:\"\";\n display:block;\n width:76px;\n height:6px;\n margin:0 0 18px;\n border-radius:999px;\n background:linear-gradient(90deg,#f28c00 0 48%,#352783 48% 100%);\n}\n#rio-chat .rio-routepage-v2 .rio-single-kicker,\n#rio-chat .rio-routepage-v2 .rio-mini-kicker,\n#rio-chat .rio-routepage-v2 .rio-orange-kicker,\n#rio-chat .rio-routepage-v2 .rio-purple-kicker {\n color:#f28c00 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-hero {\n background:linear-gradient(180deg,#ffffff 0%,#fbf9ff 100%) !important;\n border-color:#eee9fb !important;\n}\n#rio-chat .rio-routepage-v2 .rio-bridge-card {\n background:linear-gradient(145deg,#ffffff 0%,#fffaf2 100%) !important;\n border-color:#f6d7aa !important;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-block,\n#rio-chat .rio-routepage-v2 .rio-app-single,\n#rio-chat .rio-routepage-v2 .rio-proof-single {\n background:linear-gradient(145deg,#fbf9ff 0%,#ffffff 74%) !important;\n border-color:#e5ddfb !important;\n}\n#rio-chat .rio-routepage-v2 .rio-reviews-single {\n background:#fff !important;\n border-color:#eee9fb !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow {\n background:linear-gradient(145deg,#ffffff 0%,#fffaf2 100%) !important;\n color:#1a1a2e !important;\n border:1px solid #f6d7aa !important;\n box-shadow:0 28px 62px -52px rgba(242,140,0,.48) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-single-kicker {\n background:#fff1da !important;\n color:#b96a00 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > h2 {\n color:#352783 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-meta {\n background:#f4f0ff !important;\n color:#352783 !important;\n border-color:#e5ddfb !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-intro,\n#rio-chat .rio-routepage-v2 .rio-workshop-flow p,\n#rio-chat .rio-routepage-v2 .rio-workshop-bullets,\n#rio-chat .rio-routepage-v2 .rio-workshop-step-body {\n color:#5f5876 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step {\n background:#fff !important;\n border-color:#ece7fb !important;\n box-shadow:0 16px 36px -30px rgba(53,39,131,.38) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-head {\n color:#1a1a2e !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-head strong {\n color:#1a1a2e !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-nr {\n background:#352783;\n color:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-result-step {\n background:linear-gradient(145deg,#f5fff6 0%,#ffffff 100%) !important;\n border-color:#cbeecd !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image,\n#rio-chat .rio-routepage-v2 .rio-workshop-image img,\n#rio-chat .rio-routepage-v2 .rio-workshop-image figcaption {\n background:transparent !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image figcaption {\n color:#7562c9 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared {\n background:linear-gradient(145deg,#f8f5ff 0%,#ffffff 100%) !important;\n color:#1a1a2e !important;\n border:1px solid #e5ddfb !important;\n box-shadow:0 22px 50px -42px rgba(53,39,131,.42) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared::before {\n border-color:rgba(53,39,131,.08) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-label {\n background:#fff1da !important;\n color:#b96a00 !important;\n box-shadow:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-legend span,\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared > p {\n color:#5f5876 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-meter {\n background:#ffffff !important;\n border-color:#e8e2fb !important;\n box-shadow:inset 0 0 0 1px rgba(255,255,255,.72) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-meter::before {\n background:linear-gradient(180deg,#f28c00 0%,#b9e8bb 50%,#8476d6 100%) !important;\n box-shadow:0 0 0 6px rgba(132,118,214,.08) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band {\n background:#fff !important;\n border-color:#ece7fb !important;\n box-shadow:0 14px 30px -28px rgba(53,39,131,.36) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band strong {\n color:#352783 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band span {\n color:#5f5876 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band.is-high {\n background:linear-gradient(135deg,#fff8ef 0%,#ffffff 100%) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band.is-window {\n background:linear-gradient(135deg,#f3fff4 0%,#ffffff 100%) !important;\n outline:1px solid rgba(185,232,187,.5) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-band.is-low {\n background:linear-gradient(135deg,#f6f3ff 0%,#ffffff 100%) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared .rio-tolerance-marker {\n border-color:#fff !important;\n color:#fff !important;\n box-shadow:0 14px 28px -18px rgba(53,39,131,.58) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-diagram {\n background:linear-gradient(145deg,#f8f5ff 0%,#ffffff 100%) !important;\n border:1px solid #e5ddfb !important;\n box-shadow:0 22px 50px -42px rgba(53,39,131,.42) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-diagram::before {\n border-color:rgba(53,39,131,.08) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-loop-line path {\n stroke:#8476d6 !important;\n filter:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node {\n background:#fff !important;\n border-color:#e5ddfb !important;\n box-shadow:0 16px 34px -28px rgba(53,39,131,.42) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node span {\n background:#352783 !important;\n color:#fff !important;\n border-color:#fff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node.is-1 span {\n background:#f28c00 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node strong {\n color:#1a1a2e !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-node small {\n color:#5f5876 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-center {\n background:#fff1da !important;\n color:#352783 !important;\n border:2px solid #f28c00 !important;\n box-shadow:0 18px 36px -28px rgba(242,140,0,.44) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-center strong,\n#rio-chat .rio-routepage-v2 .rio-cycle-center span {\n color:#352783 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single {\n background:#fff !important;\n color:#1a1a2e !important;\n border:1px solid #e5ddfb !important;\n box-shadow:0 28px 62px -52px rgba(53,39,131,.42) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single h2,\n#rio-chat .rio-routepage-v2 .rio-price-single p,\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-single-kicker {\n color:#352783 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single > p {\n color:#5f5876 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta {\n background:linear-gradient(145deg,#fbf9ff 0%,#ffffff 100%) !important;\n color:#1a1a2e !important;\n border:1px solid #e5ddfb !important;\n box-shadow:0 24px 58px -50px rgba(53,39,131,.42) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta::before {\n background:radial-gradient(circle,rgba(242,140,0,.18),transparent 68%) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta h2 {\n color:#352783 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta p {\n color:#5f5876 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta .rio-route-button {\n background:#f28c00 !important;\n color:#fff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve {\n border-color:rgba(206,198,248,.36) !important;\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-single-section h2::before {\n width:62px;\n height:5px;\n margin-bottom:14px;\n }\n}\n/* Routepagina V20: accenten als rand, niet als zwaar kleurvlak */\n#rio-chat .rio-routepage-v2,\n#rio-chat .rio-routepage-v2 *,\n#rio-chat .rio-routepage-v2 *::before,\n#rio-chat .rio-routepage-v2 *::after {\n box-sizing:border-box !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-section {\n box-shadow:\n 0 1px 0 rgba(255,255,255,.9) inset,\n 0 24px 58px -52px rgba(53,39,131,.36) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-bridge-card,\n#rio-chat .rio-routepage-v2 .rio-workshop-flow {\n background:#fff !important;\n border-color:#f3cf9b !important;\n box-shadow:\n 0 0 0 6px rgba(242,140,0,.045),\n 0 24px 58px -52px rgba(242,140,0,.42) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-block,\n#rio-chat .rio-routepage-v2 .rio-app-single,\n#rio-chat .rio-routepage-v2 .rio-proof-single,\n#rio-chat .rio-routepage-v2 .rio-final-cta {\n background:#fff !important;\n border-color:#e5ddfb !important;\n box-shadow:\n 0 0 0 6px rgba(132,118,214,.05),\n 0 24px 58px -52px rgba(53,39,131,.36) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-single {\n background:linear-gradient(145deg,#fbf9ff 0%,#ffffff 72%) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single {\n background:#fff !important;\n border-color:#e5ddfb !important;\n box-shadow:\n 0 0 0 6px rgba(132,118,214,.045),\n 0 24px 58px -52px rgba(53,39,131,.36) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-visual.is-shared,\n#rio-chat .rio-routepage-v2 .rio-cycle-diagram {\n background:#fff !important;\n border-color:#e8e2fb !important;\n box-shadow:\n 0 0 0 6px rgba(132,118,214,.045),\n 0 20px 44px -38px rgba(53,39,131,.34) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-title {\n color:#352783 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-title::after {\n content:\"\";\n display:block;\n width:94px;\n height:7px;\n margin:22px 0 0;\n border-radius:999px;\n background:linear-gradient(90deg,#f28c00 0 46%,#352783 46% 100%);\n}\n#rio-chat .rio-routepage-v2 .rio-understand-image.rio-img-parent-broken,\n#rio-chat .rio-routepage-v2 .rio-parent-cycle-image.rio-img-parent-broken {\n display:none !important;\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-single-headbar {\n display:grid !important;\n grid-template-columns:minmax(0,1fr) minmax(98px,124px) !important;\n align-items:center !important;\n gap:8px !important;\n width:100% !important;\n max-width:100% !important;\n box-sizing:border-box !important;\n overflow:hidden !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-headbar .rio-route-brand {\n min-width:0 !important;\n overflow:hidden !important;\n }\n #rio-chat .rio-routepage-v2 .rio-route-logo {\n flex:0 0 32px !important;\n width:32px !important;\n height:32px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-route-brand-main {\n font-size:14px !important;\n line-height:1.05 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-route-brand-sub {\n display:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-route-button-compact {\n width:100% !important;\n max-width:124px !important;\n min-width:0 !important;\n min-height:40px !important;\n padding:7px 8px !important;\n font-size:10.2px !important;\n line-height:1.12 !important;\n white-space:normal !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-title::after {\n width:74px;\n height:6px;\n margin-top:16px;\n }\n}\n/* Routepagina V21: desktoprijen paginabreed, zonder buitenkaarten */\n@media(min-width:768px){\n #rio-chat.rio-toont-route {\n width:100% !important;\n max-width:none !important;\n overflow-x:clip !important;\n }\n #rio-chat.rio-toont-route .rio-routepop:not([hidden]) {\n position:static !important;\n inset:auto !important;\n width:100% !important;\n max-width:none !important;\n min-height:0 !important;\n padding:0 !important;\n background:#fff !important;\n overflow:visible !important;\n }\n #rio-chat.rio-toont-route .rio-routepop-shell,\n #rio-chat .rio-routepage-v2,\n #rio-chat .rio-routepage-v2 .rio-single-route {\n width:100% !important;\n max-width:none !important;\n margin:0 !important;\n border:0 !important;\n border-radius:0 !important;\n box-shadow:none !important;\n background:#fff !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route {\n display:block !important;\n padding:0 0 92px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section {\n width:100vw !important;\n max-width:none !important;\n margin:0 calc(50% - 50vw) !important;\n border:0 !important;\n border-radius:0 !important;\n box-shadow:none !important;\n padding:76px max(56px,calc((100vw - 1280px)/2 + 56px)) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-hero {\n padding-top:64px !important;\n background:#fff !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-bridge-card,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-understand-block,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-proof-single {\n background:#fbf9ff !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-app-single {\n background:linear-gradient(180deg,#fff 0%,#fbf9ff 100%) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-workshop-flow,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-reviews-single,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-final-cta {\n background:#fff !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single {\n color:#1a1a2e !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single h2,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single p,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single .rio-single-kicker {\n color:#352783 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single > p {\n color:#5f5876 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-final-cta {\n display:grid !important;\n grid-template-columns:minmax(0,760px) auto !important;\n justify-content:center !important;\n align-items:center !important;\n gap:26px 54px !important;\n text-align:left !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-final-cta::before {\n display:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-final-cta .rio-route-button {\n justify-self:end !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-guide-card {\n align-self:start !important;\n margin:0 !important;\n padding:0 !important;\n border:0 !important;\n border-radius:0 !important;\n background:transparent !important;\n box-shadow:none !important;\n overflow:visible !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-guide-card .rio-guide-mockup {\n margin:0 0 22px !important;\n padding:0 !important;\n border:0 !important;\n border-radius:0 !important;\n background:transparent !important;\n box-shadow:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-guide-card .rio-guide-mockup img {\n width:100% !important;\n max-height:245px !important;\n object-fit:contain !important;\n object-position:center !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-guide-card .rio-guide-copy {\n padding:22px 0 0 !important;\n border-top:1px solid #e6defb !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-guide-card .rio-guide-copy h2 {\n max-width:360px !important;\n font-size:34px !important;\n line-height:1.12 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-guide-card .rio-guide-copy p {\n max-width:390px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single h2::before {\n margin-left:auto !important;\n margin-right:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single > p {\n max-width:720px !important;\n margin-left:auto !important;\n margin-right:auto !important;\n text-align:center !important;\n }\n}\n/* Routepagina V22: sterker zoals de 7-daagse, betaalblok compacter */\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section {\n padding-top:92px !important;\n padding-bottom:92px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-hero {\n padding-top:78px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-kicker {\n font-size:13px !important;\n letter-spacing:.14em !important;\n margin-bottom:18px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-title {\n max-width:760px !important;\n font-size:62px !important;\n line-height:1.03 !important;\n letter-spacing:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-lead {\n max-width:720px !important;\n margin-top:26px !important;\n font-size:20px !important;\n line-height:1.7 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-title::after {\n width:110px !important;\n height:8px !important;\n margin-top:26px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section h2 {\n max-width:920px !important;\n font-size:46px !important;\n line-height:1.08 !important;\n letter-spacing:0 !important;\n text-wrap:balance;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section h3 {\n font-size:28px !important;\n line-height:1.16 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section p {\n font-size:18px !important;\n line-height:1.72 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-told-card {\n margin-top:34px !important;\n padding:32px 34px !important;\n border-radius:22px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-told-quote {\n font-size:20px !important;\n line-height:1.55 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-recognition-card,\n #rio-chat .rio-routepage-v2 .rio-parent-emotion-card {\n padding:0 !important;\n border:0 !important;\n background:transparent !important;\n box-shadow:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-bridge-card h2,\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > h2,\n #rio-chat .rio-routepage-v2 .rio-app-single > h2 {\n font-size:50px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve {\n margin-top:42px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve h3 {\n font-size:34px !important;\n line-height:1.08 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow {\n gap:0 58px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-step-head strong {\n font-size:21px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-result-step .rio-workshop-step-body h3 {\n font-size:32px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single {\n padding-top:72px !important;\n padding-bottom:76px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single > h2 {\n max-width:760px !important;\n margin-left:auto !important;\n margin-right:auto !important;\n text-align:center !important;\n font-size:34px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single .rio-plan-list,\n #rio-chat .rio-routepage-v2 .rio-price-single .rio-pricing-perks {\n width:min(860px,100%) !important;\n margin-left:auto !important;\n margin-right:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single .rio-pricing-main-cta {\n width:min(680px,100%) !important;\n margin-left:auto !important;\n margin-right:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single .rio-payment-safe,\n #rio-chat .rio-routepage-v2 .rio-price-single .rio-payment-methods {\n width:min(680px,100%) !important;\n margin-left:auto !important;\n margin-right:auto !important;\n justify-content:center !important;\n }\n}\n/* Routepagina V23: tablet/nauwe desktop niet laten knellen */\n@media(min-width:768px) and (max-width:1099px){\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section {\n padding:62px 56px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero {\n display:block !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-title {\n max-width:620px !important;\n font-size:clamp(40px,7vw,50px) !important;\n line-height:1.08 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-lead {\n max-width:620px !important;\n font-size:18px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section h2,\n #rio-chat .rio-routepage-v2 .rio-bridge-card h2,\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > h2,\n #rio-chat .rio-routepage-v2 .rio-app-single > h2 {\n max-width:680px !important;\n font-size:clamp(32px,5.2vw,40px) !important;\n line-height:1.12 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section p {\n font-size:17px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-guide-card {\n margin-top:40px !important;\n max-width:620px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-guide-card .rio-guide-mockup img {\n max-height:290px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow {\n display:block !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-image {\n max-width:520px !important;\n margin-left:auto !important;\n margin-right:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single .rio-plan-list,\n #rio-chat .rio-routepage-v2 .rio-price-single .rio-pricing-perks {\n width:min(680px,100%) !important;\n }\n}\n/* Routepagina V24: laatste CTA-blok donkerder als duidelijke afsluiter */\n#rio-chat .rio-routepage-v2 .rio-final-cta {\n background:linear-gradient(135deg,#171139 0%,#241a5b 56%,#352783 100%) !important;\n color:#fff !important;\n border-color:rgba(206,198,248,.22) !important;\n box-shadow:0 28px 70px -48px rgba(23,17,57,.62) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta h2 {\n color:#fff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta p {\n color:#e7e1ff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-final-cta .rio-route-button {\n background:#f28c00 !important;\n color:#fff !important;\n box-shadow:0 18px 32px -20px rgba(242,140,0,.86) !important;\n}\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-final-cta {\n background:linear-gradient(135deg,#171139 0%,#241a5b 56%,#352783 100%) !important;\n padding-top:86px !important;\n padding-bottom:86px !important;\n }\n}\n/* Routepagina V25: verandering-stappen lichten een voor een op */\n@keyframes rioChangeDotWalk {\n 0%, 21%, 100% {\n background:#5a4cb1;\n color:#fff;\n transform:scale(1);\n box-shadow:0 0 0 8px rgba(255,255,255,.07), 0 16px 26px rgba(0,0,0,.18);\n }\n 6%, 15% {\n background:#f28c00;\n color:#fff;\n transform:scale(1.13);\n box-shadow:\n 0 0 0 9px rgba(242,140,0,.18),\n 0 0 0 18px rgba(255,255,255,.07),\n 0 18px 34px rgba(242,140,0,.36);\n }\n}\n@keyframes rioChangeTextWalk {\n 0%, 21%, 100% {\n color:#c8c0ef;\n opacity:.66;\n }\n 6%, 15% {\n color:#fff;\n opacity:1;\n }\n}\n@keyframes rioChangeLineWalk {\n to { stroke-dashoffset:-52; }\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step {\n --rio-step-delay:0s;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-1 {--rio-step-delay:0s;}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-2 {--rio-step-delay:2s;}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-3 {--rio-step-delay:4s;}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-4 {--rio-step-delay:6s;}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-1 .rio-change-curve-dot {\n background:#5a4cb1;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-dot {\n animation:rioChangeDotWalk 8s ease-in-out infinite;\n animation-delay:var(--rio-step-delay);\n will-change:transform,box-shadow,background;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step strong,\n#rio-chat .rio-routepage-v2 .rio-change-curve-step small {\n animation:rioChangeTextWalk 8s ease-in-out infinite;\n animation-delay:var(--rio-step-delay);\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-line-accent {\n animation:rioChangeLineWalk 5.8s linear infinite;\n}\n@media(prefers-reduced-motion:reduce){\n #rio-chat .rio-routepage-v2 .rio-change-curve-dot,\n #rio-chat .rio-routepage-v2 .rio-change-curve-step strong,\n #rio-chat .rio-routepage-v2 .rio-change-curve-step small,\n #rio-chat .rio-routepage-v2 .rio-change-curve-line-accent {\n animation:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step.is-1 .rio-change-curve-dot {\n background:#f28c00 !important;\n box-shadow:0 0 0 9px rgba(242,140,0,.14), 0 16px 26px rgba(0,0,0,.18) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step strong,\n #rio-chat .rio-routepage-v2 .rio-change-curve-step small {\n opacity:1 !important;\n }\n}\n/* Routepagina V26: eerste rij zonder grote titel, label iets prominenter */\n#rio-chat .rio-routepage-v2 .rio-single-hero > .rio-single-kicker {\n color:#352783 !important;\n font-size:14px !important;\n letter-spacing:.1em !important;\n margin-bottom:20px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-hero > .rio-single-kicker::before {\n width:64px !important;\n height:6px !important;\n}\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-single-kicker {\n font-size:18px !important;\n letter-spacing:.08em !important;\n margin-bottom:14px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-single-kicker::before {\n width:86px !important;\n height:7px !important;\n }\n}\n/* Routepagina V27: eerste rij compacter bovenin */\n#rio-chat .rio-routepage-v2 .rio-single-hero > .rio-single-lead {\n margin-top:0 !important;\n margin-bottom:16px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-hero > .rio-told-card {\n margin-top:14px !important;\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-single-kicker {\n margin-bottom:12px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-single-lead {\n margin-bottom:14px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-hero > .rio-told-card {\n margin-top:10px !important;\n }\n}\n/* Routepagina V28: workshop rustiger en stapnummers lopen mee */\n@keyframes rioWorkshopStepPulse {\n 0%, 16%, 100% {\n background:#352783;\n transform:scale(1);\n box-shadow:0 0 0 0 rgba(242,140,0,0);\n }\n 5%, 11% {\n background:#f28c00;\n transform:scale(1.12);\n box-shadow:0 0 0 8px rgba(242,140,0,.16), 0 12px 24px rgba(242,140,0,.24);\n }\n}\n@keyframes rioWorkshopStepTextPulse {\n 0%, 16%, 100% {\n color:#1a1a2e;\n }\n 5%, 11% {\n color:#352783;\n }\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow {\n background:#fff !important;\n border-color:#e5ddfb !important;\n box-shadow:0 0 0 6px rgba(132,118,214,.045), 0 24px 58px -52px rgba(53,39,131,.36) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-single-kicker,\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-title-label,\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-name,\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-meta,\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-intro {\n background:transparent !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-single-kicker {\n color:#b96a00 !important;\n padding-bottom:8px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-title-label {\n max-width:740px !important;\n padding-bottom:8px !important;\n color:#352783 !important;\n font-size:clamp(32px,6.8vw,48px) !important;\n line-height:1.06 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-name {\n margin:0 !important;\n padding:0 18px 10px !important;\n color:#241a5b !important;\n font-size:clamp(20px,4.8vw,26px) !important;\n line-height:1.2 !important;\n font-weight:900 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-meta {\n display:flex !important;\n width:max-content !important;\n max-width:100%;\n margin:0 18px 10px !important;\n padding:7px 13px !important;\n border:1px solid #e5ddfb !important;\n border-radius:999px !important;\n background:#f7f4ff !important;\n color:#5f5876 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-intro {\n border-bottom:1px solid #ece7fb !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step {\n --rio-workshop-delay:0s;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step:nth-child(1) {--rio-workshop-delay:0s;}\n#rio-chat .rio-routepage-v2 .rio-workshop-step:nth-child(2) {--rio-workshop-delay:2s;}\n#rio-chat .rio-routepage-v2 .rio-workshop-step:nth-child(3) {--rio-workshop-delay:4s;}\n#rio-chat .rio-routepage-v2 .rio-workshop-step:nth-child(4) {--rio-workshop-delay:6s;}\n#rio-chat .rio-routepage-v2 .rio-workshop-step:nth-child(5) {--rio-workshop-delay:8s;}\n#rio-chat .rio-routepage-v2 .rio-workshop-step .rio-workshop-step-nr {\n background:#352783;\n animation:rioWorkshopStepPulse 10s ease-in-out infinite;\n animation-delay:var(--rio-workshop-delay);\n will-change:transform,box-shadow,background;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-head strong {\n animation:rioWorkshopStepTextPulse 10s ease-in-out infinite;\n animation-delay:var(--rio-workshop-delay);\n}\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-title-label {\n font-size:56px !important;\n line-height:1.04 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-name {\n max-width:760px !important;\n font-size:30px !important;\n }\n}\n@media(prefers-reduced-motion:reduce){\n #rio-chat .rio-routepage-v2 .rio-workshop-step .rio-workshop-step-nr,\n #rio-chat .rio-routepage-v2 .rio-workshop-step-head strong {\n animation:none !important;\n }\n}\n/* Routepagina V29: donker betaalblok, expertisebeeld even hoog en CTA's naar keuze */\n#rio-chat .rio-routepage-v2 .rio-price-single {\n background:linear-gradient(135deg,#171139 0%,#241a5b 58%,#352783 100%) !important;\n color:#fff !important;\n border:0 !important;\n box-shadow:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single {\n background:linear-gradient(135deg,#171139 0%,#241a5b 58%,#352783 100%) !important;\n color:#fff !important;\n border:0 !important;\n box-shadow:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single h2,\n#rio-chat .rio-routepage-v2 .rio-price-single > p,\n#rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single h2,\n#rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single > p {\n color:#fff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-plan-list {\n padding:18px !important;\n border:1px solid rgba(255,255,255,.18) !important;\n border-radius:24px !important;\n background:rgba(255,255,255,.10) !important;\n box-shadow:0 28px 58px -38px rgba(0,0,0,.34) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row {\n background:#fff !important;\n border-color:#e5ddfb !important;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row.is-selected {\n background:#fff8ef !important;\n border-color:#f28c00 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-pricing-main-cta {\n background:#f28c00 !important;\n color:#fff !important;\n box-shadow:0 18px 34px -20px rgba(242,140,0,.84) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-payment-safe,\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-pricing-perks .rio-single-check,\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-payment-methods span {\n color:#f4f0ff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-payment-methods span {\n border-color:rgba(255,255,255,.24) !important;\n background:rgba(255,255,255,.08) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-pricing-perks {\n border-top-color:rgba(255,255,255,.18) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-plan-secondary {\n display:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single.rio-plans-expanded .rio-plan-secondary {\n display:block !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-plan-reveal {\n display:block;\n width:max-content;\n max-width:100%;\n margin:16px auto 20px;\n padding:4px 0;\n border:0;\n border-bottom:1px solid rgba(255,255,255,.55);\n background:transparent;\n color:#fff;\n font:800 16px/1.45 inherit;\n cursor:pointer;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-plan-reveal:hover,\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-plan-reveal:focus-visible {\n color:#ffd39a;\n border-bottom-color:#f28c00;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single .rio-payment-safe-before {\n margin:0 auto 14px !important;\n color:#fff !important;\n font-weight:800 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-copy {\n display:grid;\n gap:0;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat-overline {\n display:block;\n margin:0 0 8px;\n color:#f28c00 !important;\n font-size:12px !important;\n font-weight:900;\n letter-spacing:.08em;\n line-height:1;\n text-transform:uppercase;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat:nth-child(2) .rio-proof-stat-overline {\n color:#fbbc04 !important;\n font-size:17px !important;\n letter-spacing:.05em;\n}\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-proof-single {\n display:grid !important;\n grid-template-columns:minmax(0,1fr) minmax(360px,520px) !important;\n gap:44px !important;\n align-items:stretch !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-copy {\n grid-column:1 !important;\n align-content:start !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-group {\n grid-column:2 !important;\n grid-row:1 !important;\n height:100% !important;\n min-height:520px !important;\n margin:0 !important;\n border-radius:28px !important;\n overflow:hidden !important;\n align-self:stretch !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-group img {\n width:100% !important;\n height:100% !important;\n object-fit:cover !important;\n object-position:center !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-stats {\n margin-top:24px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single {\n padding-top:92px !important;\n padding-bottom:96px !important;\n }\n}\n/* Routepagina V30: window-of-tolerance afbeelding met concreet gedrag */\n#rio-chat .rio-routepage-v2 .rio-tolerance-row {\n align-items:stretch !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-image-panel {\n margin:0 !important;\n align-self:center;\n overflow:hidden;\n border:1px solid #e5ddfb;\n border-radius:26px;\n background:#f7f4ff;\n box-shadow:0 22px 50px -42px rgba(53,39,131,.46);\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-image-panel img {\n display:block;\n width:100%;\n height:auto;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-image-panel figcaption {\n padding:14px 16px 16px;\n color:#5f5876;\n font-size:13px;\n line-height:1.45;\n font-weight:800;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-image-panel.rio-img-parent-broken {\n display:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-behavior-list {\n display:grid;\n gap:10px;\n margin:18px 0 0;\n padding:0;\n list-style:none;\n}\n#rio-chat .rio-routepage-v2 .rio-behavior-list li {\n display:grid;\n grid-template-columns:92px minmax(0,1fr);\n gap:10px;\n align-items:start;\n padding:12px 13px;\n border:1px solid #ece7fb;\n border-radius:14px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-behavior-list strong {\n color:#352783;\n font-size:13px;\n font-weight:900;\n line-height:1.25;\n}\n#rio-chat .rio-routepage-v2 .rio-behavior-list span {\n color:#51496f;\n font-size:13px;\n line-height:1.45;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-card-child .rio-behavior-list li:nth-child(1) strong,\n#rio-chat .rio-routepage-v2 .rio-understand-card-parent .rio-behavior-list li:nth-child(1) strong {\n color:#f28c00;\n}\n@media(min-width:1100px){\n #rio-chat .rio-routepage-v2 .rio-tolerance-row {\n grid-template-columns:minmax(260px,.9fr) minmax(430px,1.22fr) minmax(260px,.9fr) !important;\n gap:24px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-row > .rio-tolerance-image-panel {\n grid-column:2 !important;\n grid-row:1 !important;\n }\n}\n@media(min-width:768px) and (max-width:1099px){\n #rio-chat .rio-routepage-v2 .rio-tolerance-row {\n grid-template-columns:1fr !important;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-image-panel {\n width:min(640px,100%) !important;\n justify-self:center !important;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-tolerance-image-panel {\n border-radius:20px;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-image-panel figcaption {\n padding:12px 13px;\n font-size:12px;\n }\n #rio-chat .rio-routepage-v2 .rio-behavior-list li {\n grid-template-columns:1fr;\n gap:4px;\n }\n}\n/* Routepagina V31: window-of-tolerance rij in betere verhouding */\n#rio-chat .rio-routepage-v2 .rio-understand-block > .rio-single-lead,\n#rio-chat .rio-routepage-v2 .rio-understand-block > p {\n max-width:860px;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-row > .rio-understand-card {\n display:flex !important;\n flex-direction:column;\n justify-content:center;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-image-panel {\n width:100%;\n max-width:620px;\n justify-self:center;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-image-panel img {\n aspect-ratio:3 / 2;\n object-fit:contain;\n background:#171139;\n}\n@media(min-width:1200px){\n #rio-chat .rio-routepage-v2 .rio-tolerance-row {\n grid-template-columns:minmax(280px,.84fr) minmax(520px,1.32fr) minmax(280px,.84fr) !important;\n gap:30px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-row > .rio-understand-card {\n min-height:560px !important;\n padding:30px 26px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-image-panel {\n max-width:600px;\n }\n}\n@media(min-width:768px) and (max-width:1199px){\n #rio-chat .rio-routepage-v2 .rio-tolerance-row {\n grid-template-columns:1fr !important;\n max-width:760px;\n margin-left:auto !important;\n margin-right:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-row > .rio-understand-card {\n min-height:0 !important;\n }\n}\n/* Routepagina V32: window- en cirkelvisual beter in verhouding */\n#rio-chat .rio-routepage-v2 .rio-tolerance-image-panel {\n overflow:visible !important;\n border:0 !important;\n background:transparent !important;\n box-shadow:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-image-panel img {\n aspect-ratio:auto !important;\n object-fit:contain !important;\n background:transparent !important;\n border-radius:0 !important;\n filter:drop-shadow(0 24px 40px rgba(53,39,131,.16));\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-image-panel figcaption {\n display:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-image-panel {\n margin:22px auto 20px !important;\n overflow:hidden;\n border:1px solid #ece7fb;\n border-radius:24px;\n background:#fff;\n box-shadow:0 22px 52px -44px rgba(53,39,131,.42);\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-image-panel img {\n display:block;\n width:100%;\n height:auto;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-image-panel.rio-img-parent-broken {\n display:none !important;\n}\n@media(min-width:1200px){\n #rio-chat .rio-routepage-v2 .rio-tolerance-row {\n grid-template-columns:minmax(230px,.62fr) minmax(660px,1.76fr) minmax(230px,.62fr) !important;\n gap:26px !important;\n align-items:center !important;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-row > .rio-understand-card {\n min-height:0 !important;\n align-self:center !important;\n justify-content:flex-start !important;\n padding:24px 22px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-image-panel {\n max-width:780px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-behavior-list {\n gap:8px !important;\n margin-top:14px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-behavior-list li {\n grid-template-columns:76px minmax(0,1fr) !important;\n gap:8px !important;\n padding:10px 11px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-behavior-list strong,\n #rio-chat .rio-routepage-v2 .rio-behavior-list span {\n font-size:12.5px !important;\n }\n}\n@media(min-width:920px){\n #rio-chat .rio-routepage-v2 .rio-cycle-compact {\n display:grid !important;\n grid-template-columns:minmax(0,1.38fr) minmax(300px,.62fr) !important;\n gap:20px 28px !important;\n align-items:center !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-compact > h3,\n #rio-chat .rio-routepage-v2 .rio-cycle-compact > p {\n grid-column:1 / -1 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-image-panel {\n grid-column:1 !important;\n grid-row:3 / span 2 !important;\n margin:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-steps {\n grid-column:2 !important;\n grid-row:3 !important;\n margin:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-callout {\n grid-column:2 !important;\n grid-row:4 !important;\n margin:0 !important;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-tolerance-image-panel {\n margin:4px 0 2px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-image-panel {\n border-radius:18px;\n }\n}\n/* Routepagina V33: nieuwste flow, concrete koppen en beter geschaalde visuals */\n#rio-chat .rio-chatonderkant,\n#rio-chat .rio-composer,\n#rio-chat .rio-antwoorden {\n overscroll-behavior:auto;\n touch-action:pan-y;\n}\n#rio-chat .rio-composer input {\n overscroll-behavior:auto;\n touch-action:manipulation;\n}\n#rio-chat .rio-routepage-v2 .rio-single-title::after,\n#rio-chat .rio-routepage-v2 .rio-single-section h2::before,\n#rio-chat .rio-routepage-v2 .rio-single-section h3::before,\n#rio-chat .rio-routepage-v2 .rio-single-kicker::before {\n content:none !important;\n display:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-kicker {\n padding-left:0 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-intro-row {\n display:grid;\n gap:28px;\n align-items:center;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-block {\n display:block !important;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-block > * {\n grid-column:auto !important;\n grid-row:auto !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-intro-copy {\n min-width:0;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-intro-copy p {\n max-width:720px;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-image-panel {\n width:100% !important;\n max-width:620px !important;\n margin:0 auto !important;\n align-self:center !important;\n justify-self:center !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-image-panel img {\n display:block !important;\n width:100% !important;\n height:auto !important;\n max-height:460px !important;\n object-fit:contain !important;\n filter:drop-shadow(0 24px 38px rgba(53,39,131,.13)) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-card-row {\n display:grid;\n grid-template-columns:1fr;\n gap:18px;\n margin-top:30px;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-card-row > .rio-understand-card {\n grid-column:auto !important;\n grid-row:auto !important;\n width:auto !important;\n max-width:none !important;\n margin:0 !important;\n min-height:0 !important;\n padding:28px !important;\n background:#fff !important;\n border:1px solid #e8e2fb !important;\n box-shadow:0 18px 42px -38px rgba(53,39,131,.32) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section {\n background:#fbf9ff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section > h3 {\n color:#352783 !important;\n font-size:clamp(32px,5vw,48px) !important;\n line-height:1.08 !important;\n margin:0 0 10px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section > p {\n max-width:760px !important;\n margin:0 0 28px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-image-panel {\n width:100% !important;\n max-width:860px !important;\n margin:0 auto !important;\n overflow:visible !important;\n border:0 !important;\n border-radius:0 !important;\n background:transparent !important;\n box-shadow:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-image-panel img {\n width:100% !important;\n height:auto !important;\n max-height:620px !important;\n object-fit:contain !important;\n filter:drop-shadow(0 24px 44px rgba(53,39,131,.13));\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-steps {\n align-self:center !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-callout {\n padding:20px 22px !important;\n border:0 !important;\n border-radius:20px !important;\n background:#24165f !important;\n color:#fff !important;\n box-shadow:0 18px 38px -28px rgba(36,22,95,.58) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-callout strong,\n#rio-chat .rio-routepage-v2 .rio-cycle-callout span {\n color:#fff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-callout span {\n color:#eee9ff !important;\n margin-top:6px;\n}\n@media(min-width:920px){\n #rio-chat .rio-routepage-v2 .rio-tolerance-intro-row {\n grid-template-columns:minmax(0,.95fr) minmax(430px,1.05fr);\n gap:56px;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-card-row {\n grid-template-columns:repeat(2,minmax(0,1fr));\n gap:28px;\n margin-top:42px;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section {\n display:grid !important;\n grid-template-columns:minmax(0,1.22fr) minmax(320px,.78fr) !important;\n gap:18px 46px !important;\n align-items:center !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section > h3,\n #rio-chat .rio-routepage-v2 .rio-cycle-section > p {\n grid-column:1 / -1 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-image-panel {\n grid-column:1 !important;\n grid-row:3 / span 2 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-steps {\n grid-column:2 !important;\n grid-row:3 !important;\n margin:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-callout {\n grid-column:2 !important;\n grid-row:4 !important;\n margin:0 !important;\n }\n}\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-understand-block {\n background:#fff !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-cycle-section {\n padding-top:92px !important;\n padding-bottom:96px !important;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-tolerance-intro-row {\n gap:18px;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-image-panel img {\n max-height:320px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-card-row {\n margin-top:20px;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-card-row > .rio-understand-card {\n padding:22px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section > h3 {\n font-size:30px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-image-panel img {\n max-height:360px !important;\n }\n}\n/* WordPress/Divi layout fix: voorkom dat 100vw en negatieve margins de pagina links uit beeld trekken. */\n#rio-chat-embed {\n display:block !important;\n width:100vw !important;\n max-width:100vw !important;\n margin-left:calc(50% - 50vw) !important;\n margin-right:calc(50% - 50vw) !important;\n overflow-x:hidden !important;\n}\n#rio-chat {\n width:100% !important;\n max-width:100% !important;\n margin-left:0 !important;\n margin-right:0 !important;\n overflow-x:hidden !important;\n}\n#rio-chat.rio-toont-route {\n width:100% !important;\n max-width:100% !important;\n margin-left:0 !important;\n margin-right:0 !important;\n overflow-x:hidden !important;\n}\n#rio-chat .rio-routepop:not([hidden]),\n#rio-chat .rio-routepop-shell,\n#rio-chat .rio-resultaat.rio-routepage.rio-routepage-v2,\n#rio-chat .rio-routepage-v2,\n#rio-chat .rio-routepage-v2 .rio-single-route {\n width:100% !important;\n max-width:100% !important;\n margin-left:0 !important;\n margin-right:0 !important;\n transform:none !important;\n overflow-x:hidden !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-bottom {\n display:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-section,\n#rio-chat .rio-routepage-v2 .rio-app-single,\n#rio-chat .rio-routepage-v2 .rio-single-hero,\n#rio-chat .rio-routepage-v2 .rio-understand-block,\n#rio-chat .rio-routepage-v2 .rio-cycle-section,\n#rio-chat .rio-routepage-v2 .rio-bridge-card,\n#rio-chat .rio-routepage-v2 .rio-workshop-flow,\n#rio-chat .rio-routepage-v2 .rio-change-journey,\n#rio-chat .rio-routepage-v2 .rio-proof-single,\n#rio-chat .rio-routepage-v2 .rio-reviews-single {\n margin-left:0 !important;\n margin-right:0 !important;\n max-width:100% !important;\n}\n#rio-chat .rio-routepage-v2 img,\n#rio-chat .rio-routepage-v2 svg,\n#rio-chat .rio-routepage-v2 video {\n max-width:100% !important;\n}\n@media(min-width:768px){\n #rio-chat.rio-toont-route .rio-routepop:not([hidden]) {\n position:static !important;\n inset:auto !important;\n min-height:0 !important;\n padding:0 !important;\n background:#fff !important;\n overflow:visible !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-headbar {\n width:100% !important;\n max-width:100% !important;\n padding-left:clamp(22px,4vw,64px) !important;\n padding-right:clamp(22px,4vw,64px) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-app-single {\n width:100% !important;\n max-width:100% !important;\n margin-left:0 !important;\n margin-right:0 !important;\n padding-left:clamp(24px,5vw,76px) !important;\n padding-right:clamp(24px,5vw,76px) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single {\n width:min(860px,100%) !important;\n max-width:860px !important;\n margin-left:auto !important;\n margin-right:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-bottom-inner {\n width:min(1180px,calc(100% - 48px)) !important;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepop:not([hidden]) {\n left:0 !important;\n right:0 !important;\n width:100% !important;\n max-width:100% !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-app-single {\n width:100% !important;\n max-width:100% !important;\n margin-left:0 !important;\n margin-right:0 !important;\n padding-left:18px !important;\n padding-right:18px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single {\n width:100% !important;\n max-width:100% !important;\n margin-left:0 !important;\n margin-right:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-plan-row-body {\n grid-template-columns:22px minmax(0,1fr) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-plan-row-price {\n grid-column:2 !important;\n text-align:left !important;\n }\n}\n/* Routepagina V32: samenhangende desktopbreedte, leesbare workshop en nette appbeelden */\n@media(min-width:1100px){\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-app-single {\n padding-left:max(56px,calc((100vw - 1320px)/2)) !important;\n padding-right:max(56px,calc((100vw - 1320px)/2)) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow {\n column-gap:clamp(44px,5vw,76px) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-intro,\n #rio-chat .rio-routepage-v2 .rio-workshop-step-body,\n #rio-chat .rio-routepage-v2 .rio-workshop-bullets {\n font-size:19px !important;\n line-height:1.68 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-step-head strong {\n font-size:22px !important;\n }\n}\n#rio-chat .rio-routepage-v2 .rio-app-tiles {\n align-items:stretch !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tile {\n display:grid !important;\n grid-template-rows:170px 1fr !important;\n overflow:hidden !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tile > img {\n display:block !important;\n width:100% !important;\n height:170px !important;\n padding:12px !important;\n object-fit:contain !important;\n object-position:center !important;\n background:#faf8ff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-tile > div {\n align-self:stretch !important;\n}\n/* V34: paginabreed betaalblok, leesbare cirkelstappen en gecentreerde laatste apptegels */\n#rio-chat .rio-routepage-v2 .rio-price-single,\n#rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single {\n width:100% !important;\n max-width:100% !important;\n margin-left:0 !important;\n margin-right:0 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single > h2,\n#rio-chat .rio-routepage-v2 .rio-price-single > p,\n#rio-chat .rio-routepage-v2 .rio-price-single > .rio-plan-list,\n#rio-chat .rio-routepage-v2 .rio-price-single > .rio-pricing-main-cta,\n#rio-chat .rio-routepage-v2 .rio-price-single > .rio-payment-safe,\n#rio-chat .rio-routepage-v2 .rio-price-single > .rio-payment-methods,\n#rio-chat .rio-routepage-v2 .rio-price-single > .rio-pricing-perks {\n width:min(900px,100%) !important;\n margin-left:auto !important;\n margin-right:auto !important;\n}\n@media(min-width:920px){\n #rio-chat .rio-routepage-v2 .rio-cycle-section {\n grid-template-columns:minmax(420px,.9fr) minmax(440px,1.1fr) !important;\n gap:22px 58px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-image-panel {\n max-width:650px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-image-panel img {\n max-height:500px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-steps {\n gap:20px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-steps li {\n grid-template-columns:52px minmax(0,1fr) !important;\n gap:14px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-number {\n width:46px !important;\n height:46px !important;\n font-size:20px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-steps strong {\n font-size:20px !important;\n line-height:1.3 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-steps span:not(.rio-cycle-number) {\n font-size:17px !important;\n line-height:1.55 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-app-tiles {\n grid-template-columns:repeat(6,minmax(0,1fr)) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-app-tile {\n grid-column:span 2;\n }\n #rio-chat .rio-routepage-v2 .rio-app-tile:nth-last-child(2) {\n grid-column:2 / span 2;\n }\n #rio-chat .rio-routepage-v2 .rio-app-tile:last-child {\n grid-column:4 / span 2;\n }\n #rio-chat .rio-routepage-v2 .rio-pro-list .rio-pro-card:last-child {\n grid-column:1 / -1;\n width:calc(50% - 6px);\n justify-self:center;\n }\n #rio-chat .rio-routepage-v2 .rio-professional-strip .rio-professional:last-child {\n grid-column:2 / span 2;\n justify-self:center;\n width:min(100%,320px);\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-price-single,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single {\n width:100vw !important;\n max-width:100vw !important;\n margin-left:calc(50% - 50vw) !important;\n margin-right:calc(50% - 50vw) !important;\n padding-left:18px !important;\n padding-right:18px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-visual {\n min-height:500px !important;\n padding-left:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-line {\n display:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-visual::before {\n content:\"\";\n position:absolute;\n left:26px;\n top:42px;\n bottom:42px;\n width:7px;\n border-radius:999px;\n background:linear-gradient(180deg,#f28c00 0%,#a58ce7 34%,#6652bd 68%,#f1a43d 100%);\n box-shadow:0 0 0 7px rgba(255,255,255,.06);\n }\n #rio-chat .rio-routepage-v2 .rio-change-curve-step.is-1 {top:12px !important;}\n #rio-chat .rio-routepage-v2 .rio-change-curve-step.is-2 {top:138px !important;}\n #rio-chat .rio-routepage-v2 .rio-change-curve-step.is-3 {top:264px !important;}\n #rio-chat .rio-routepage-v2 .rio-change-curve-step.is-4 {top:390px !important;}\n #rio-chat .rio-routepage-v2 .rio-app-tile {\n grid-template-rows:150px 1fr !important;\n }\n #rio-chat .rio-routepage-v2 .rio-app-tile > img {\n height:150px !important;\n }\n}\n/* V35: lagere instapdrempel en één duidelijke betaalactie */\n#rio-chat .rio-startchips {\n display:flex;\n flex-wrap:wrap;\n gap:7px;\n margin:0 54px 14px 2px;\n}\n#rio-chat .rio-startchips button {\n min-height:34px;\n padding:7px 11px;\n border:1px solid #ddd5f5;\n border-radius:999px;\n background:#f7f4ff;\n color:#352783;\n font:inherit;\n font-size:12px;\n font-weight:800;\n line-height:1.2;\n cursor:pointer;\n}\n#rio-chat .rio-startchips button:hover,\n#rio-chat .rio-startchips button:focus-visible {\n border-color:#8476d6;\n background:#eee9ff;\n outline:none;\n}\n#rio-chat .rio-routepage-v2 .rio-payment-safe::before {\n content:\"✓\" !important;\n display:grid;\n width:20px;\n height:20px;\n place-items:center;\n border:0 !important;\n border-radius:50%;\n background:#dff5ec;\n color:#14866d;\n font-size:13px;\n font-weight:950;\n}\n#rio-chat .rio-routepage-v2 .rio-mid-cta {\n display:flex;\n flex-direction:column;\n align-items:center;\n justify-content:center;\n gap:20px;\n padding:28px clamp(24px,5vw,64px) !important;\n border-top:1px solid #e1daf7;\n border-bottom:1px solid #e1daf7;\n background:#f5f2ff;\n text-align:center;\n}\n#rio-chat .rio-routepage-v2 .rio-mid-cta-copy {\n max-width:720px;\n margin:0 auto;\n}\n#rio-chat .rio-routepage-v2 .rio-mid-cta .rio-single-kicker {\n margin-bottom:6px;\n}\n#rio-chat .rio-routepage-v2 .rio-mid-cta h3 {\n margin:0;\n color:#352783;\n font-size:clamp(22px,2.4vw,34px);\n line-height:1.15;\n}\n#rio-chat .rio-routepage-v2 .rio-mid-cta .rio-route-button {\n flex:0 0 auto;\n min-width:280px;\n min-height:58px;\n padding:16px 30px;\n font-size:17px;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-cta {\n width:fit-content;\n min-width:280px;\n min-height:58px;\n margin:0 auto 24px !important;\n padding:16px 30px;\n justify-content:center;\n font-size:17px;\n}\n@media(max-width:560px){\n #rio-chat .rio-startchips {margin-right:2px;gap:6px;}\n #rio-chat .rio-startchips button {font-size:11.5px;}\n #rio-chat .rio-routepage-v2 .rio-mid-cta {\n display:block;\n padding:25px 18px !important;\n text-align:center;\n }\n #rio-chat .rio-routepage-v2 .rio-mid-cta .rio-route-button {\n width:100%;\n margin-top:18px;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-cta {\n width:100%;\n min-width:0;\n }\n}\n\n/* Rustige testflow: een vraag per scherm, zonder chatballonnen. */\n#rio-chat .rio-assistent.rio-actief .rio-chatvenster {\n max-width:920px;\n min-height:620px;\n margin:0 auto;\n overflow:hidden;\n background:#fff;\n border:1px solid rgba(67,45,145,.14);\n box-shadow:0 24px 70px rgba(43,27,102,.18);\n}\n#rio-chat.rio-intake-active .rio-hero {min-height:100svh; padding:12px; overflow:hidden; background:#f5f4f1;}\n#rio-chat.rio-intake-active .rio-hero::before {background:#f5f4f1;}\n#rio-chat.rio-intake-active .rio-merk,\n#rio-chat.rio-intake-active .rio-bewijs,\n#rio-chat.rio-intake-active .rio-titel,\n#rio-chat.rio-intake-active .rio-intro {display:none;}\n#rio-chat.rio-intake-active .rio-inhoud {width:100%; max-width:1100px; height:calc(100svh - 24px);}\n#rio-chat.rio-intake-active .rio-assistent {width:100%; max-width:1100px; height:100%; margin:0 auto; border-radius:8px; box-shadow:none;}\n#rio-chat.rio-intake-active .rio-assistent.rio-actief .rio-chatvenster {width:100%; max-width:none; height:100%; min-height:0; max-height:none; margin:0; border-color:#ddd9d1; box-shadow:none;}\n#rio-chat .rio-testflow {display:none; flex:1; min-height:0; padding:38px 48px 42px; overflow-y:auto; overscroll-behavior:contain; scrollbar-gutter:stable;}\n#rio-chat .rio-assistent.rio-actief .rio-testflow {display:flex; flex-direction:column;}\n#rio-chat .rio-assistent.rio-actief .rio-berichten,\n#rio-chat .rio-assistent.rio-actief .rio-chatonderkant {display:none !important;}\n#rio-chat .rio-assistent.rio-actief .rio-chatkop {min-height:44px; justify-content:flex-end; padding:8px 14px;}\n#rio-chat .rio-assistent.rio-actief .rio-chatkop .rio-avatar,\n#rio-chat .rio-assistent.rio-actief .rio-chatkop .rio-agentnaam,\n#rio-chat .rio-assistent.rio-actief .rio-chatkop .rio-status {display:none;}\n#rio-chat .rio-test-progress {display:grid; grid-template-columns:1fr auto; gap:10px 18px; align-items:center; margin-bottom:38px;}\n#rio-chat .rio-test-progressbar {grid-column:1/-1; height:7px; overflow:hidden; border-radius:999px; background:#ece8fa;}\n#rio-chat .rio-test-progressbar i {display:block; width:0; height:100%; border-radius:inherit; background:#6f5bd3; transition:width .52s cubic-bezier(.22,.75,.24,1);}\n#rio-chat .rio-test-progress span {color:#766f89; font-size:14px; font-weight:700;}\n#rio-chat .rio-test-context {max-width:700px; margin:0 0 12px; color:#6d667d; font-size:16px; line-height:1.55;}\n#rio-chat .rio-test-question {max-width:760px; margin:0 0 26px; color:#281d62; font-size:clamp(28px,3.2vw,42px); line-height:1.13; font-weight:800; letter-spacing:0;}\n#rio-chat .rio-test-choices {display:flex; flex-wrap:wrap; gap:11px; margin:0 0 24px;}\n#rio-chat .rio-test-choice {min-height:48px; padding:12px 17px; border:1.5px solid #d9d0f5; border-radius:7px; background:#faf8ff; color:#39277f; font:700 15px/1.25 inherit; cursor:pointer; transition:background-color .24s ease,border-color .24s ease,color .24s ease,transform .18s ease,box-shadow .24s ease;}\n#rio-chat .rio-test-choice:hover {border-color:#8b78dd; background:#f4f0ff; transform:translateY(-1px);}\n#rio-chat .rio-test-choice.is-selected {border-color:#4c329c; background:#4c329c; color:#fff; box-shadow:0 8px 22px rgba(76,50,156,.2);}\n#rio-chat .rio-test-note-label {display:block; margin:0 0 9px; color:#443a5a; font-size:14px; font-weight:750;}\n#rio-chat .rio-test-note {box-sizing:border-box; width:100%; min-height:104px; resize:vertical; padding:15px 16px; border:1.5px solid #dcd6e9; border-radius:7px; background:#fff; color:#282333; font:16px/1.5 inherit; outline:none;}\n#rio-chat .rio-test-note:focus {border-color:#765fd1; box-shadow:0 0 0 4px rgba(118,95,209,.1);}\n#rio-chat .rio-test-error {min-height:22px; margin:8px 0 0; color:#a43737; font-size:14px; font-weight:650;}\n#rio-chat .rio-test-nav {display:flex; justify-content:space-between; align-items:center; gap:14px; margin-top:auto; padding-top:28px;}\n#rio-chat .rio-test-back,\n#rio-chat .rio-test-next {min-height:52px; border-radius:7px; padding:13px 22px; font:800 16px/1 inherit; cursor:pointer;}\n#rio-chat .rio-test-back {border:1px solid #d9d2e7; background:#fff; color:#4f4661;}\n#rio-chat .rio-test-next {min-width:150px; border:0; background:#ff7a1a; color:#fff; box-shadow:0 10px 25px rgba(226,91,0,.22);}\n#rio-chat .rio-test-next:disabled {cursor:wait; opacity:.58;}\n#rio-chat .rio-test-loading {animation:rio-soft-pulse 1.1s ease-in-out infinite alternate;}\n#rio-chat.rio-intake-active .rio-testflow {padding:20px 34px 22px; overflow:hidden;}\n#rio-chat.rio-intake-active .rio-test-progress {margin-bottom:18px; gap:7px 16px;}\n#rio-chat.rio-intake-active .rio-test-progressbar {height:4px; background:#ece9e3;}\n#rio-chat.rio-intake-active .rio-test-progressbar i {background:#5e4bb8;}\n#rio-chat.rio-intake-active .rio-test-context {max-width:780px; max-height:40px; margin-bottom:8px; overflow:hidden; color:#736d7b; font-size:13px; line-height:1.45;}\n#rio-chat.rio-intake-active .rio-test-question {max-width:820px; margin-bottom:16px; color:#17141d; font-size:clamp(22px,2.2vw,29px); line-height:1.18;}\n#rio-chat.rio-intake-active .rio-test-choices {gap:8px; margin-bottom:16px;}\n#rio-chat.rio-intake-active .rio-test-choice {min-height:42px; padding:9px 14px; border-color:#d9d5cd; background:#fff; color:#2e2935; font-size:14px; box-shadow:none;}\n#rio-chat.rio-intake-active .rio-test-choice:hover {border-color:#7968c5; background:#f7f5ff; transform:none;}\n#rio-chat.rio-intake-active .rio-test-choice.is-selected {border-color:#5a48a8; background:#5a48a8; color:#fff; box-shadow:none;}\n#rio-chat.rio-intake-active .rio-test-note-label {margin-bottom:6px; font-size:13px;}\n#rio-chat.rio-intake-active .rio-test-note {min-height:64px; max-height:82px; padding:11px 13px; font-size:14px; resize:none;}\n#rio-chat.rio-intake-active .rio-test-error {min-height:18px; margin-top:5px; font-size:12px;}\n#rio-chat.rio-intake-active .rio-test-nav {padding-top:10px;}\n#rio-chat.rio-intake-active .rio-test-back,\n#rio-chat.rio-intake-active .rio-test-next {min-height:44px; padding:10px 18px; font-size:14px; box-shadow:none;}\n#rio-chat .rio-routepage-v2 .rio-first-attempt {\n border-top:1px solid #eee8fb;\n border-bottom:1px solid #eee8fb;\n background:#f7f3ff;\n}\n#rio-chat .rio-routepage-v2 .rio-first-attempt h2 {max-width:760px; margin:8px auto 18px; text-align:center; color:#302079;}\n#rio-chat .rio-routepage-v2 .rio-first-attempt-copy {max-width:760px; margin:0 auto; color:#292435; font-size:clamp(18px,2vw,22px); line-height:1.6; text-align:center;}\n#rio-chat .rio-routepage-v2 .rio-first-attempt-note {max-width:680px; margin:18px auto 0; color:#716a7d; text-align:center;}\n#rio-chat .rio-routepage-v2 .rio-hopeful-close {background:#352477; color:#fff; text-align:center;}\n#rio-chat .rio-routepage-v2 .rio-hopeful-close h2 {max-width:760px; margin:10px auto 18px; color:#fff;}\n#rio-chat .rio-routepage-v2 .rio-hopeful-close p {max-width:760px; margin:0 auto; color:#f5f1ff; font-size:clamp(18px,2vw,22px); line-height:1.65;}\n\n/* Nieuw openingsscherm: rustige test in plaats van een chat-hero. */\n#rio-chat .rio-hero {\n min-height:100svh;\n padding:34px 20px 72px;\n background:#f4f1fb;\n color:#29233b;\n}\n#rio-chat .rio-hero::before {\n inset:0;\n background:linear-gradient(180deg,#eee9fb 0,#f8f6fc 42%,#fff 100%);\n filter:none;\n transform:none;\n}\n#rio-chat .rio-hero::after {display:none;}\n#rio-chat .rio-inhoud {width:min(920px,100%); text-align:left;}\n#rio-chat .rio-merk {margin:0 0 34px; color:#352783; font-size:14px; text-align:center;}\n#rio-chat .rio-bewijs {\n display:flex;\n width:max-content;\n margin:0 auto 18px;\n border-color:#ded6f1;\n background:#fff;\n color:#5d5570;\n backdrop-filter:none;\n}\n#rio-chat .rio-titel {\n max-width:730px;\n margin:0 auto 14px;\n color:#2f2275;\n font-size:clamp(36px,5.2vw,58px);\n line-height:1.06;\n text-align:center;\n}\n#rio-chat .rio-intro {max-width:650px; margin:0 auto 34px; color:#665f72; font-size:18px; text-align:center;}\n#rio-chat .rio-assistent:not(.rio-actief) {\n width:min(760px,100%);\n border:1px solid #e0d9f0;\n border-radius:8px;\n box-shadow:0 24px 60px rgba(55,38,113,.13);\n}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-startvlak {padding:30px;}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-starttekst {\n margin:0 0 16px;\n color:#352783;\n font-size:17px;\n font-weight:800;\n}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-starttekst::after {\n content:'Kies wat het dichtst in de buurt komt. Daarna vragen we rustig door op wat er bij jou gebeurt.';\n display:block;\n margin-top:6px;\n color:#756e80;\n font-size:13px;\n font-weight:500;\n line-height:1.45;\n}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-startchips {display:grid; grid-template-columns:repeat(3,1fr); gap:10px; margin:0 0 24px;}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-startchips button {\n display:flex;\n min-height:76px;\n padding:12px 14px;\n flex-direction:column;\n align-items:flex-start;\n justify-content:center;\n gap:5px;\n border-radius:7px;\n background:#faf8ff;\n text-align:left;\n}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-startchips button strong {color:inherit; font-size:13px; line-height:1.25;}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-startchips button span {color:#70687d; font-size:11px; font-weight:600; line-height:1.35;}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-startchips button.is-selected span {color:rgba(255,255,255,.82);}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-startchips button:focus,\n#rio-chat .rio-assistent:not(.rio-actief) .rio-startchips button.is-selected {border-color:#4d349c; background:#4d349c; color:#fff;}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-invoerwrap {display:flex; flex-direction:column; gap:14px;}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-hoofdinvoer {\n height:82px;\n padding:16px;\n border:1.5px solid #dcd5ea;\n border-radius:7px;\n background:#fff;\n font-size:16px;\n}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-hoofdinvoer::placeholder {color:#90899b;}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-typewriter {display:none !important;}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-startknop {\n position:static;\n display:flex;\n width:100%;\n height:54px;\n gap:10px;\n border-radius:7px;\n background:#f17819;\n font-size:16px;\n font-weight:800;\n}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-startknop::before {content:'Begin met mijn vragen';}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-meettoestemming {margin:18px 0 0; font-size:12px;}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-privacylinks {margin:10px 0 0 24px; font-size:12px;}\n\n/* Typografische openingsvariant: menselijker en minder symmetrisch. */\n#rio-chat .rio-hero {border-top:7px solid #f28c00; background:#f7f5fb;}\n#rio-chat .rio-hero::before {background:#f7f5fb;}\n#rio-chat .rio-inhoud {position:relative;}\n#rio-chat .rio-merk {\n width:max-content;\n margin:0;\n padding:8px 0;\n color:#2f2275;\n text-align:left;\n}\n#rio-chat .rio-bewijs {\n position:absolute;\n top:0;\n right:0;\n margin:0;\n padding:8px 0;\n border:0;\n border-radius:0;\n background:transparent;\n color:#625b70;\n}\n#rio-chat .rio-titel {\n position:relative;\n max-width:700px;\n margin:78px 0 18px;\n text-align:left;\n}\n#rio-chat .rio-titel::after {\n content:\"\";\n display:block;\n width:82px;\n height:6px;\n margin-top:20px;\n border-radius:999px;\n background:#f28c00;\n}\n#rio-chat .rio-intro {\n max-width:650px;\n margin:0 0 34px;\n color:#5d5668;\n text-align:left;\n}\n#rio-chat .rio-assistent:not(.rio-actief) {\n width:min(820px,92%);\n margin:0 0 0 auto;\n border-color:#dcd4ec;\n border-left:5px solid #6f5bd3;\n box-shadow:0 22px 54px rgba(48,32,105,.12);\n}\n#rio-chat .rio-assistent:not(.rio-actief) .rio-starttekst {font-size:18px;}\n\n/* Strakke openingsvariant: rustige productinterface met duidelijke hierarchie. */\n#rio-chat:not(.rio-intake-active) .rio-hero {\n padding:24px 24px 56px;\n border-top:4px solid #f28c00;\n background:#fff;\n}\n#rio-chat:not(.rio-intake-active) .rio-hero::before {background:transparent;}\n#rio-chat:not(.rio-intake-active) .rio-inhoud {width:min(1040px,100%);}\n#rio-chat:not(.rio-intake-active) .rio-merk {\n margin:0;\n padding:6px 0;\n color:#2b2440;\n font-size:12px;\n letter-spacing:0;\n}\n#rio-chat:not(.rio-intake-active) .rio-bewijs {\n top:1px;\n padding:6px 0;\n color:#6b6672;\n font-size:12px;\n}\n#rio-chat:not(.rio-intake-active) .rio-sterren {color:#f28c00;}\n#rio-chat:not(.rio-intake-active) .rio-titel {\n max-width:680px;\n margin:64px auto 12px;\n color:#17151c;\n font-size:clamp(34px,4.2vw,48px);\n line-height:1.08;\n text-align:center;\n}\n#rio-chat:not(.rio-intake-active) .rio-titel span {color:#6a50c7;}\n#rio-chat:not(.rio-intake-active) .rio-titel::after {display:none;}\n#rio-chat:not(.rio-intake-active) .rio-intro {\n max-width:610px;\n margin:0 auto 28px;\n color:#554f61;\n font-size:17px;\n line-height:1.55;\n text-align:center;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) {\n width:min(860px,100%);\n margin:0 auto;\n padding:14px;\n border:0;\n border-radius:8px;\n background:linear-gradient(135deg,#e6dcff 0%,#f4dff0 54%,#ffe3cc 100%);\n box-shadow:none;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startvlak {\n padding:20px 26px 18px;\n border:1px solid rgba(255,255,255,.9);\n border-radius:7px;\n background:#fff;\n box-shadow:0 12px 30px rgba(47,35,80,.08);\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-starttekst {\n margin-bottom:12px;\n color:#1d1a22;\n font-size:17px;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-starttekst::before {\n content:none;\n display:none;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-starttekst::after {\n color:#77717c;\n font-size:12.5px;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips {gap:8px; margin-bottom:12px;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button {\n min-height:70px;\n padding:11px 12px;\n border:1px solid #dedbd5;\n background:#fff;\n box-shadow:none;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:nth-child(1),\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:nth-child(4) {border-top:3px solid #f28c00;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:nth-child(2),\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:nth-child(5) {border-top:3px solid #7662c4;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:nth-child(3),\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:nth-child(6) {border-top:3px solid #df6f8c;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:hover {\n border-color:#7968c5;\n background:#f8f7fc;\n transform:none;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:focus,\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button.is-selected {\n border-color:#5d4db0;\n background:#f2f0fb;\n color:#352783;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button.is-selected span {color:#635b72;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-hoofdinvoer {height:56px; border-color:#d8d4ce;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startknop {height:48px; background:#332878;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startknop:hover {background:#251c5c;}\n\n/* Circle Courses-richting: een krachtig kleurvlak met één helder productscherm. */\n#rio-chat:not(.rio-intake-active) .rio-hero {\n min-height:100svh;\n padding-bottom:64px;\n border-top:0;\n background:\n radial-gradient(ellipse 82% 66% at 50% 42%,rgba(132,118,214,.78) 0%,rgba(123,79,232,.48) 44%,rgba(53,39,131,0) 100%),\n #352783;\n}\n#rio-chat:not(.rio-intake-active) .rio-merk,\n#rio-chat:not(.rio-intake-active) .rio-bewijs {color:#fff;}\n#rio-chat:not(.rio-intake-active) .rio-sterren {color:#fff;}\n#rio-chat:not(.rio-intake-active) .rio-titel {color:#fff; font-weight:750;}\n#rio-chat:not(.rio-intake-active) .rio-titel span {color:inherit;}\n#rio-chat:not(.rio-intake-active) .rio-intro {color:rgba(255,255,255,.92);}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) {\n padding:8px;\n border:1px solid rgba(255,255,255,.7);\n background:#d9c9ff;\n box-shadow:0 24px 55px rgba(8,10,61,.28);\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startvlak {\n border:1px solid #e4e1dd;\n background:#fff;\n box-shadow:none;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-starttekst::before {color:#6550bd;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button,\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:nth-child(n) {\n border:1px solid #dedbd5;\n border-top:1px solid #dedbd5;\n background:#fff;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:hover {border-color:#7461be; background:#f7f6fb;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:focus,\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button.is-selected {border-color:#5d4db0; background:#eeeafa;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button span {display:none;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button {\n min-height:48px;\n align-items:center;\n padding:10px 12px;\n text-align:center;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-invoerwrap {display:flex;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startknop::before {content:'Volgende';}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startknop {background:#f28c00;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startknop:hover {background:#d97800;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startknop {\n width:auto;\n min-width:180px;\n height:44px;\n align-self:center;\n padding:10px 24px;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-meettoestemming {margin-top:12px;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-privacylinks {margin-top:6px;}\n#rio-chat .rio-merk {\n position:static;\n display:flex;\n justify-content:center;\n transform:none;\n width:auto;\n margin:0;\n padding:0;\n}\n#rio-chat .rio-merklogo {\n display:block;\n width:64px;\n height:auto;\n filter:brightness(0) invert(1);\n}\n#rio-chat:not(.rio-intake-active) .rio-titel {\n margin:2px auto 6px;\n}\n#rio-chat:not(.rio-intake-active) .rio-bewijs {\n position:static;\n width:max-content;\n margin:0 auto 12px;\n padding:0;\n justify-content:center;\n color:#fff;\n}\n#rio-chat .rio-sterren {color:#ffd34d !important;}\n#rio-chat:not(.rio-intake-active) .rio-intro {margin-bottom:16px;}\n@keyframes rio-soft-pulse {to{opacity:.48}}\n@media(max-width:650px){\n #rio-chat .rio-hero {padding:22px 14px 38px;}\n #rio-chat .rio-merk {width:auto; margin:0; font-size:11px; text-align:left;}\n #rio-chat .rio-bewijs {position:static; width:auto; justify-content:flex-start; margin:4px 0 0; padding:3px 0; font-size:11px;}\n #rio-chat .rio-titel {margin:40px 0 15px; font-size:38px; text-align:left;}\n #rio-chat .rio-titel::after {width:64px; height:5px; margin-top:15px;}\n #rio-chat .rio-intro {margin-bottom:24px; font-size:16px;}\n #rio-chat .rio-assistent:not(.rio-actief) {width:100%; margin:0; border-left-width:4px;}\n #rio-chat .rio-assistent:not(.rio-actief) .rio-startvlak {padding:20px 16px;}\n #rio-chat .rio-assistent:not(.rio-actief) .rio-startchips {grid-template-columns:1fr 1fr; gap:8px;}\n #rio-chat .rio-assistent:not(.rio-actief) .rio-startchips button {min-height:78px; padding:10px;}\n #rio-chat .rio-assistent:not(.rio-actief) .rio-startchips button strong {font-size:12px;}\n #rio-chat .rio-assistent:not(.rio-actief) .rio-startchips button span {font-size:10.5px;}\n #rio-chat:not(.rio-intake-active) .rio-hero {padding:18px 14px 32px;}\n #rio-chat:not(.rio-intake-active) .rio-merk {font-size:10px;}\n #rio-chat .rio-merklogo {width:54px;}\n #rio-chat:not(.rio-intake-active) .rio-bewijs {display:flex; margin:0 auto 8px; font-size:10.5px;}\n #rio-chat:not(.rio-intake-active) .rio-titel {margin:2px auto 6px; font-size:30px; text-align:center;}\n #rio-chat:not(.rio-intake-active) .rio-intro {margin-bottom:12px; font-size:14px; text-align:center;}\n #rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) {border-left-width:1px;}\n #rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startvlak {padding:18px 14px;}\n #rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips {gap:6px;}\n #rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button {min-height:68px; padding:9px;}\n #rio-chat .rio-assistent.rio-actief .rio-chatvenster {height:calc(100svh - 24px); min-height:0; max-height:calc(100svh - 24px); border-radius:0;}\n #rio-chat .rio-testflow {padding:25px 18px 24px;}\n #rio-chat .rio-test-progress {margin-bottom:28px;}\n #rio-chat .rio-test-question {font-size:29px;}\n #rio-chat .rio-test-choices {display:grid; grid-template-columns:1fr 1fr; gap:9px;}\n #rio-chat .rio-test-choice {width:100%; min-height:54px; padding:11px; font-size:14px;}\n #rio-chat .rio-test-note {min-height:92px;}\n #rio-chat .rio-test-nav {position:sticky; bottom:0; margin:18px -18px -24px; padding:14px 18px max(16px,env(safe-area-inset-bottom)); background:rgba(255,255,255,.97); border-top:1px solid #eee9f6;}\n #rio-chat.rio-intake-active .rio-hero {padding:8px;}\n #rio-chat.rio-intake-active .rio-inhoud {height:calc(100svh - 16px);}\n #rio-chat.rio-intake-active .rio-assistent.rio-actief .rio-chatvenster {height:100%; max-height:none; border-radius:8px;}\n #rio-chat.rio-intake-active .rio-testflow {padding:12px 13px 10px; overflow:hidden;}\n #rio-chat.rio-intake-active .rio-test-progress {margin-bottom:9px;}\n #rio-chat.rio-intake-active .rio-test-context {max-height:34px; margin-bottom:5px; font-size:11.5px; line-height:1.35;}\n #rio-chat.rio-intake-active .rio-test-question {margin-bottom:10px; font-size:19px; line-height:1.2;}\n #rio-chat.rio-intake-active .rio-test-choices {gap:6px; margin-bottom:9px;}\n #rio-chat.rio-intake-active .rio-test-choice {min-height:38px; padding:7px 8px; font-size:12px; line-height:1.2;}\n #rio-chat.rio-intake-active .rio-test-note-label {margin-bottom:4px; font-size:11.5px;}\n #rio-chat.rio-intake-active .rio-test-note {min-height:48px; max-height:54px; padding:8px 10px; font-size:13px;}\n #rio-chat.rio-intake-active .rio-test-error {min-height:14px; margin-top:3px;}\n #rio-chat.rio-intake-active .rio-test-nav {position:static; margin:auto 0 0; padding:7px 0 0; border-top:0; background:#fff;}\n #rio-chat.rio-intake-active .rio-test-back,\n #rio-chat.rio-intake-active .rio-test-next {min-height:40px; padding:8px 14px; font-size:13px;}\n}\n\n/* De intake blijft in dezelfde kaart als het openingsscherm. */\n#rio-chat.rio-intake-active .rio-hero {\n min-height:100svh;\n height:auto;\n padding:14px 24px 22px;\n overflow:visible;\n background:\n radial-gradient(ellipse 82% 66% at 50% 42%,rgba(132,118,214,.78) 0%,rgba(123,79,232,.48) 44%,rgba(53,39,131,0) 100%),\n #352783;\n}\n#rio-chat.rio-intake-active .rio-hero::before {background:transparent;}\n#rio-chat.rio-intake-active .rio-merk {display:block;}\n#rio-chat.rio-intake-active .rio-bewijs {display:flex;}\n#rio-chat.rio-intake-active .rio-merk,\n#rio-chat.rio-intake-active .rio-bewijs {color:#fff;}\n#rio-chat.rio-intake-active .rio-merklogo {width:50px;}\n#rio-chat.rio-intake-active .rio-bewijs {\n position:static;\n width:max-content;\n margin:0 auto 6px;\n padding:0;\n justify-content:center;\n font-size:10.5px;\n}\n#rio-chat.rio-intake-active .rio-titel {\n display:block;\n max-width:760px;\n margin:2px auto 4px;\n color:#fff;\n font-size:clamp(28px,3.1vw,38px);\n line-height:1.08;\n text-align:center;\n}\n#rio-chat.rio-intake-active .rio-titel span {color:#f28c00;}\n#rio-chat.rio-intake-active .rio-titel::after {display:none;}\n#rio-chat.rio-intake-active .rio-intro {\n display:block;\n max-width:650px;\n margin:0 auto 14px;\n color:rgba(255,255,255,.92);\n font-size:14px;\n text-align:center;\n}\n#rio-chat.rio-intake-active .rio-inhoud {width:min(1040px,100%); height:auto;}\n#rio-chat.rio-intake-active .rio-assistent {\n width:min(860px,100%);\n height:auto;\n margin:0 auto;\n padding:8px;\n border:1px solid rgba(255,255,255,.62);\n border-radius:8px;\n background:#d9c9ff;\n box-shadow:0 24px 55px rgba(8,10,61,.28);\n}\n#rio-chat.rio-intake-active .rio-assistent.rio-actief .rio-chatvenster {\n width:100%;\n max-width:none;\n height:auto;\n min-height:390px;\n max-height:none;\n margin:0;\n border:1px solid #e4e1dd;\n border-radius:7px;\n background:#fff;\n box-shadow:none;\n}\n#rio-chat.rio-intake-active .rio-testflow {min-height:340px; padding-top:12px; padding-bottom:12px;}\n#rio-chat.rio-intake-active .rio-test-progress {margin-bottom:10px;}\n#rio-chat.rio-intake-active .rio-test-context {max-height:34px; margin-bottom:5px; font-size:12px; line-height:1.35;}\n#rio-chat.rio-intake-active .rio-test-question {margin-bottom:10px; font-size:clamp(20px,2vw,24px);}\n#rio-chat.rio-intake-active .rio-test-choices {margin-bottom:10px;}\n#rio-chat.rio-intake-active .rio-test-note {min-height:52px; max-height:58px;}\n#rio-chat.rio-intake-active .rio-test-nav {margin-top:4px; padding-top:5px;}\n\n@media(max-width:650px){\n #rio-chat.rio-intake-active .rio-hero {padding:8px 10px 12px; overflow:visible;}\n #rio-chat.rio-intake-active .rio-merk {display:block;}\n #rio-chat.rio-intake-active .rio-bewijs {display:flex; margin-bottom:4px; font-size:9.5px;}\n #rio-chat.rio-intake-active .rio-titel {display:block; margin:2px auto 4px; font-size:24px; text-align:center;}\n #rio-chat.rio-intake-active .rio-intro {display:block; margin-bottom:8px; font-size:12px; line-height:1.35; text-align:center;}\n #rio-chat.rio-intake-active .rio-inhoud {height:auto;}\n #rio-chat.rio-intake-active .rio-assistent {height:auto; padding:6px;}\n #rio-chat.rio-intake-active .rio-assistent.rio-actief .rio-chatvenster {height:auto; min-height:460px; max-height:none;}\n #rio-chat.rio-intake-active .rio-testflow {min-height:410px;}\n}\n\n/* Compacte vragenlijst: logo, voortgang, vraag en een losse navigatiebalk. */\n#rio-chat.rio-intake-active .rio-hero {\n min-height:100svh;\n padding:8px 24px 12px;\n}\n#rio-chat.rio-intake-active .rio-merk {\n display:flex;\n justify-content:center;\n margin:0 0 5px;\n}\n#rio-chat.rio-intake-active .rio-merklogo {width:50px;}\n#rio-chat.rio-intake-active .rio-bewijs,\n#rio-chat.rio-intake-active .rio-titel,\n#rio-chat.rio-intake-active .rio-intro {display:none;}\n#rio-chat.rio-intake-active .rio-assistent {\n width:min(720px,100%);\n padding:7px;\n}\n#rio-chat.rio-intake-active .rio-assistent.rio-actief .rio-chatkop {display:none;}\n#rio-chat.rio-intake-active .rio-assistent.rio-actief .rio-chatvenster {\n min-height:0;\n overflow:hidden;\n}\n#rio-chat.rio-intake-active .rio-testflow {\n position:relative;\n min-height:0;\n padding:16px 34px 0;\n overflow:hidden;\n}\n#rio-chat.rio-intake-active .rio-test-progress {\n display:block;\n margin:0 46px 14px;\n}\n#rio-chat.rio-intake-active .rio-test-progress > span {display:none;}\n#rio-chat.rio-intake-active .rio-test-progressbar {\n height:6px;\n background:#ece9e3;\n}\n#rio-chat.rio-intake-active .rio-test-progressbar i {background:#f28c00;}\n#rio-chat.rio-intake-active .rio-test-context {\n max-width:none;\n max-height:none;\n margin:0 0 8px;\n overflow:visible;\n color:#766f7e;\n font-size:12.5px;\n line-height:1.4;\n}\n#rio-chat.rio-intake-active .rio-test-question {\n max-width:none;\n margin:0 0 10px;\n font-size:22px;\n line-height:1.2;\n}\n#rio-chat.rio-intake-active .rio-test-choices {\n display:grid;\n grid-template-columns:1fr;\n gap:5px;\n margin:0 0 9px;\n}\n#rio-chat.rio-intake-active .rio-test-choice {\n width:100%;\n min-height:38px;\n padding:7px 14px;\n border:1px solid #dedbd5;\n border-radius:7px;\n text-align:left;\n}\n#rio-chat.rio-intake-active .rio-test-choice.is-selected {\n border-color:#5a48a8;\n background:#5a48a8;\n color:#fff;\n}\n#rio-chat.rio-intake-active .rio-test-note-label {\n margin-bottom:5px;\n font-size:12px;\n}\n#rio-chat.rio-intake-active .rio-test-note {\n min-height:42px;\n max-height:46px;\n padding:8px 11px;\n font-size:13px;\n}\n#rio-chat.rio-intake-active .rio-test-error {\n min-height:14px;\n margin:3px 0 0;\n}\n#rio-chat.rio-intake-active .rio-test-nav {\n position:relative;\n display:flex;\n justify-content:center;\n margin:6px -34px 0;\n padding:10px 34px;\n border-top:1px solid #e7e3dc;\n background:#faf9f7;\n}\n#rio-chat.rio-intake-active .rio-test-back {\n position:absolute;\n top:50%;\n left:34px;\n transform:translateY(-50%);\n min-height:32px;\n padding:6px 10px;\n border-radius:50px;\n font-size:12px;\n}\n#rio-chat.rio-intake-active .rio-test-next {\n width:min(445px,100%);\n min-height:46px;\n padding:11px 20px;\n background:#f28c00;\n}\n#rio-chat.rio-intake-active .rio-test-next:disabled {\n background:#d8d4ce;\n color:#77717c;\n cursor:not-allowed;\n opacity:1;\n}\n\n@media(max-width:650px){\n #rio-chat.rio-intake-active .rio-hero {padding:10px 10px 12px;}\n #rio-chat.rio-intake-active .rio-merk {margin-bottom:7px;}\n #rio-chat.rio-intake-active .rio-merklogo {width:48px;}\n #rio-chat.rio-intake-active .rio-assistent {padding:5px;}\n #rio-chat.rio-intake-active .rio-testflow {padding:16px 14px 0;}\n #rio-chat.rio-intake-active .rio-test-progress {margin:0 40px 14px;}\n #rio-chat.rio-intake-active .rio-test-question {margin-bottom:10px; font-size:20px;}\n #rio-chat.rio-intake-active .rio-test-choices {gap:6px; margin-bottom:9px;}\n #rio-chat.rio-intake-active .rio-test-choice {min-height:39px; padding:7px 10px; font-size:12.5px;}\n #rio-chat.rio-intake-active .rio-test-context {max-height:none; font-size:11.5px;}\n #rio-chat.rio-intake-active .rio-test-note {min-height:45px; max-height:48px;}\n #rio-chat.rio-intake-active .rio-test-nav {margin:6px -14px 0; padding:10px 14px max(10px,env(safe-area-inset-bottom));}\n #rio-chat.rio-intake-active .rio-test-back {left:14px;}\n #rio-chat.rio-intake-active .rio-test-next {min-height:42px;}\n}\n\n/* Rustige merkstijl: warm wit, zwart en grijs met spaarzame kleuraccenten. */\n#rio-chat:not(.rio-intake-active) .rio-hero,\n#rio-chat.rio-intake-active .rio-hero {\n background:#f5f2fa;\n}\n#rio-chat .rio-merklogo {filter:none;}\n#rio-chat:not(.rio-intake-active) .rio-titel {\n color:#2f2465;\n max-width:680px;\n margin:2px auto 24px;\n}\n#rio-chat:not(.rio-intake-active) .rio-titel span {color:inherit;}\n#rio-chat:not(.rio-intake-active) .rio-bewijs,\n#rio-chat:not(.rio-intake-active) .rio-intro {display:none;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) {\n width:min(720px,100%);\n padding:0;\n border:1px solid #ddd7e8;\n border-radius:18px;\n background:#fff;\n box-shadow:0 20px 52px rgba(53,39,131,.14);\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startvlak {\n border:0;\n border-radius:18px;\n background:#fff;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-starttekst {display:none;}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button,\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:nth-child(n) {\n border-color:#ddd7e8;\n border-radius:12px;\n background:#fff;\n color:#352783;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:hover {\n border-color:#9588c5;\n background:#faf8fd;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:focus,\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button.is-selected {\n border-color:#352783;\n background:#f0eef8;\n color:#28203e;\n}\n#rio-chat.rio-intake-active .rio-assistent {\n width:min(560px,100%);\n padding:0;\n border:1px solid #ddd7e8;\n border-radius:18px;\n background:#fff;\n box-shadow:0 20px 52px rgba(53,39,131,.14);\n}\n#rio-chat.rio-intake-active .rio-assistent.rio-actief .rio-chatvenster {\n border:0;\n border-radius:18px;\n background:#fff;\n}\n#rio-chat.rio-intake-active .rio-test-question {color:#2f2465;}\n#rio-chat.rio-intake-active .rio-test-context {color:#655e70;}\n#rio-chat.rio-intake-active .rio-test-choice {\n border-color:#ddd7e8;\n border-radius:12px;\n background:#fff;\n color:#352783;\n}\n#rio-chat.rio-intake-active .rio-test-choice:hover {\n border-color:#9588c5;\n background:#faf8fd;\n}\n#rio-chat.rio-intake-active .rio-test-choice.is-selected {\n border-color:#352783;\n background:#352783;\n color:#fff;\n}\n#rio-chat.rio-intake-active .rio-test-nav {background:#f8f6fc;}\n#rio-chat.rio-intake-active .rio-test-nav {border-radius:0 0 18px 18px;}\n#rio-chat.rio-intake-active .rio-test-note {border-radius:12px;}\n#rio-chat.rio-intake-active .rio-test-next,\n#rio-chat.rio-intake-active .rio-test-back,\n#rio-chat:not(.rio-intake-active) .rio-startknop {border-radius:12px;}\n#rio-chat.rio-intake-active .rio-inhoud {\n display:flex;\n flex-direction:column;\n align-items:center;\n gap:10px;\n height:auto;\n min-height:calc(100svh - 20px);\n}\n#rio-chat.rio-intake-active .rio-hero {\n height:100svh;\n border-top:0;\n overflow-x:hidden;\n overflow-y:scroll;\n scrollbar-color:#8b7bc8 #e9e4f2;\n scrollbar-width:auto;\n}\n#rio-chat.rio-intake-active .rio-hero::-webkit-scrollbar {width:11px;}\n#rio-chat.rio-intake-active .rio-hero::-webkit-scrollbar-track {background:#e9e4f2;}\n#rio-chat.rio-intake-active .rio-hero::-webkit-scrollbar-thumb {\n min-height:46px;\n border:3px solid #e9e4f2;\n border-radius:999px;\n background:#8b7bc8;\n}\n#rio-chat.rio-intake-active .rio-merk,\n#rio-chat.rio-intake-active .rio-assistent {width:min(560px,100%);}\n#rio-chat.rio-intake-active .rio-assistent,\n#rio-chat.rio-intake-active .rio-assistent.rio-actief .rio-chatvenster {height:auto;}\n#rio-chat.rio-intake-active .rio-assistent.rio-actief .rio-chatvenster,\n#rio-chat.rio-intake-active .rio-testflow {overflow:visible;}\n#rio-chat.rio-intake-active .rio-test-back {display:none !important;}\n#rio-chat.rio-intake-active .rio-test-context {\n max-height:none;\n margin:0 0 18px;\n padding:0 0 18px;\n border-bottom:1px solid #eeeaf5;\n color:#655e70;\n font-size:14px;\n line-height:1.5;\n}\n\n@media(max-width:800px){\n #rio-chat,\n #rio-chat .rio-hero,\n #rio-chat .rio-inhoud,\n #rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief),\n #rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startvlak,\n #rio-chat:not(.rio-intake-active) .rio-startformulier {\n width:100%;\n max-width:100%;\n min-width:0;\n }\n #rio-chat:not(.rio-intake-active) .rio-titel {\n max-width:100%;\n overflow-wrap:break-word;\n }\n #rio-chat:not(.rio-intake-active) .rio-startchips {\n grid-template-columns:minmax(0,1fr) minmax(0,1fr);\n }\n #rio-chat:not(.rio-intake-active) .rio-startchips button {\n min-width:0;\n white-space:normal;\n overflow-wrap:break-word;\n }\n #rio-chat.rio-intake-active .rio-test-context {\n margin-bottom:14px;\n padding-bottom:14px;\n font-size:12.5px;\n line-height:1.45;\n }\n}\n\n/* OpvoedApp-palet: licht, rustig en herkenbaar uit de mobiele app. */\n#rio-chat {\n --rio-app-paars:#3f2a91;\n --rio-app-lila:#f3effd;\n --rio-app-lijn:#ddd5f3;\n --rio-app-inkt:#17151d;\n --rio-app-grijs:#625d6b;\n}\n#rio-chat:not(.rio-toont-route) .rio-hero,\n#rio-chat.rio-intake-active .rio-hero {\n background:#f5f2fb;\n color:var(--rio-app-inkt);\n}\n#rio-chat:not(.rio-toont-route) .rio-hero::before,\n#rio-chat.rio-intake-active .rio-hero::before {\n background:linear-gradient(180deg,#eee9fb 0%,#f8f6fc 48%,#f5f2fb 100%);\n}\n#rio-chat:not(.rio-intake-active) .rio-titel,\n#rio-chat.rio-intake-active .rio-test-question {\n color:var(--rio-app-inkt);\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief),\n#rio-chat.rio-intake-active .rio-assistent {\n border-color:var(--rio-app-lijn);\n background:#fff;\n box-shadow:0 18px 50px rgba(63,42,145,.12);\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button,\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:nth-child(n),\n#rio-chat.rio-intake-active .rio-test-choice {\n border-color:var(--rio-app-lijn);\n background:#fff;\n color:var(--rio-app-inkt);\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:hover,\n#rio-chat.rio-intake-active .rio-test-choice:hover {\n border-color:#9d8bd8;\n background:#faf8ff;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button:focus,\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startchips button.is-selected,\n#rio-chat.rio-intake-active .rio-test-choice.is-selected {\n border-color:var(--rio-app-paars);\n background:var(--rio-app-paars);\n color:#fff;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startknop,\n#rio-chat.rio-intake-active .rio-test-next {\n background:var(--rio-app-paars);\n color:#fff;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startknop:hover {\n background:#31206f;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startknop {\n justify-content:center;\n text-align:center;\n}\n#rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startknop svg {\n display:none;\n}\n#rio-chat:not(.rio-intake-active):not(.rio-toont-route) .rio-hero {\n display:flex;\n flex-direction:column;\n min-height:100svh;\n}\n#rio-chat:not(.rio-intake-active):not(.rio-toont-route) .rio-inhoud {\n margin-block:auto;\n}\n#rio-chat.rio-intake-active .rio-test-next:disabled {\n background:#e6e2eb;\n color:#77717c;\n}\n#rio-chat.rio-intake-active .rio-test-progressbar {background:#e8e3f2;}\n#rio-chat.rio-intake-active .rio-test-progressbar i {background:var(--rio-app-paars);}\n#rio-chat.rio-intake-active .rio-test-context {\n border-bottom-color:#ece8f3;\n color:var(--rio-app-grijs);\n}\n#rio-chat.rio-intake-active .rio-testflow.rio-is-summary .rio-test-progress,\n#rio-chat.rio-intake-active .rio-testflow.rio-is-summary .rio-test-choices,\n#rio-chat.rio-intake-active .rio-testflow.rio-is-summary .rio-test-note-label,\n#rio-chat.rio-intake-active .rio-testflow.rio-is-summary .rio-test-note,\n#rio-chat.rio-intake-active .rio-testflow.rio-is-summary .rio-test-error,\n#rio-chat.rio-intake-active .rio-testflow.rio-is-summary .rio-test-nav {\n display:none;\n}\n#rio-chat.rio-intake-active .rio-testflow.rio-is-summary .rio-test-context {\n margin:4px 0 14px;\n padding:0 0 12px;\n color:var(--rio-app-paars);\n font-size:12px;\n font-weight:800;\n line-height:1.4;\n}\n#rio-chat.rio-intake-active .rio-testflow.rio-is-summary .rio-test-question {\n margin:0;\n color:#3e3947;\n font-size:15px;\n font-weight:500;\n line-height:1.65;\n}\n#rio-chat.rio-intake-active .rio-test-context.rio-context-thinking {\n display:inline-flex;\n align-items:center;\n gap:5px;\n width:max-content;\n max-width:100%;\n margin-bottom:18px;\n padding:9px 14px;\n border:1px solid #d9d0f2;\n border-radius:999px;\n background:var(--rio-app-lila);\n color:var(--rio-app-paars);\n font-weight:700;\n}\n#rio-chat.rio-intake-active .rio-testflow.rio-is-thinking .rio-test-question,\n#rio-chat.rio-intake-active .rio-testflow.rio-is-thinking .rio-test-choices,\n#rio-chat.rio-intake-active .rio-testflow.rio-is-thinking .rio-test-note-label,\n#rio-chat.rio-intake-active .rio-testflow.rio-is-thinking .rio-test-note {\n opacity:0;\n transform:translateY(6px);\n pointer-events:none;\n transition:opacity .24s ease, transform .24s ease;\n}\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-context,\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-question,\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-choices,\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-note-label,\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-note,\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-nav {\n animation:rio-step-reveal .46s cubic-bezier(.22,.75,.24,1) both;\n}\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-question {animation-delay:.04s;}\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-choices,\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-note-label,\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-note {animation-delay:.08s;}\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-nav {animation-delay:.12s;}\n#rio-chat.rio-intake-active .rio-testflow {overflow-anchor:none;}\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-context,\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-question,\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-choices,\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-note-label,\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-note,\n#rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-nav {will-change:opacity,transform;}\n@keyframes rio-step-reveal {\n from {opacity:0; transform:translateY(9px);}\n to {opacity:1; transform:translateY(0);}\n}\n@media (prefers-reduced-motion:reduce) {\n #rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-context,\n #rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-question,\n #rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-choices,\n #rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-note-label,\n #rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-note,\n #rio-chat.rio-intake-active .rio-testflow.rio-step-enter .rio-test-nav {animation:none;}\n}\n@media (max-width:800px) {\n #rio-chat {\n width:100vw;\n max-width:100vw;\n margin-left:calc(50% - 50vw);\n overflow-x:hidden;\n }\n #rio-chat .rio-hero,\n #rio-chat .rio-inhoud,\n #rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief),\n #rio-chat:not(.rio-intake-active) .rio-assistent:not(.rio-actief) .rio-startvlak,\n #rio-chat:not(.rio-intake-active) .rio-startformulier,\n #rio-chat.rio-intake-active .rio-assistent,\n #rio-chat.rio-intake-active .rio-assistent.rio-actief .rio-chatvenster,\n #rio-chat.rio-intake-active .rio-testflow {\n width:100%;\n max-width:100%;\n min-width:0;\n }\n #rio-chat:not(.rio-intake-active) .rio-titel {\n width:100%;\n max-width:100%;\n padding-inline:4px;\n overflow-wrap:anywhere;\n }\n #rio-chat:not(.rio-intake-active) .rio-startchips {\n width:100%;\n grid-template-columns:minmax(0,1fr) minmax(0,1fr);\n }\n #rio-chat:not(.rio-intake-active) .rio-startchips button,\n #rio-chat:not(.rio-intake-active) .rio-invoerwrap,\n #rio-chat:not(.rio-intake-active) .rio-meettoestemming,\n #rio-chat:not(.rio-intake-active) .rio-privacylinks {\n min-width:0;\n max-width:100%;\n }\n}\n#rio-chat .rio-context-thinking i {\n width:5px;\n height:5px;\n border-radius:50%;\n background:currentColor;\n animation:rio-context-dot 1s ease-in-out infinite;\n}\n#rio-chat .rio-context-thinking i:nth-of-type(2) {animation-delay:.14s;}\n#rio-chat .rio-context-thinking i:nth-of-type(3) {animation-delay:.28s;}\n@keyframes rio-context-dot {\n 0%,60%,100% {opacity:.25; transform:translateY(0);}\n 30% {opacity:1; transform:translateY(-2px);}\n}\n#rio-chat.rio-intake-active .rio-test-nav {background:#faf9fd;}\n#rio-chat.rio-intake-active .rio-hero {\n scrollbar-color:#8d7acb #ece7f5;\n}\n#rio-chat.rio-intake-active .rio-hero::-webkit-scrollbar-track {background:#ece7f5;}\n#rio-chat.rio-intake-active .rio-hero::-webkit-scrollbar-thumb {\n border-color:#ece7f5;\n background:#8d7acb;\n}\n\n/* Routepagina: compacte eerste rij met een zichtbaar beeld van de persoonlijke route. */\n#rio-chat .rio-routepage-v2 .rio-single-hero {\n padding:clamp(34px,5vw,72px) clamp(24px,6vw,88px) !important;\n background:#f7f4fd !important;\n}\n#rio-chat .rio-routepage-v2 .rio-route-intro-row {\n display:grid;\n grid-template-columns:minmax(0,1fr);\n align-items:center;\n gap:clamp(26px,4vw,42px);\n width:min(480px,100%);\n margin:0 auto;\n}\n#rio-chat .rio-routepage-v2 .rio-route-intro-copy {\n width:100%;\n max-width:480px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-intro-copy .rio-single-kicker {margin-bottom:16px;}\n#rio-chat .rio-routepage-v2 .rio-route-intro-copy .rio-single-title {\n margin:0 0 18px;\n color:#17151d;\n font-size:clamp(34px,3.2vw,43px);\n line-height:1.08;\n letter-spacing:0;\n}\n#rio-chat .rio-routepage-v2 .rio-route-intro-copy .rio-single-title::after {display:none;}\n#rio-chat .rio-routepage-v2 .rio-route-intro-copy .rio-single-lead {\n max-width:480px;\n margin:0;\n color:#625d6b;\n font-size:clamp(16px,1.4vw,19px);\n line-height:1.6;\n}\n#rio-chat .rio-routepage-v2 .rio-route-story {\n margin:0 0 14px;\n padding-left:16px;\n border-left:3px solid #f28c00;\n color:#3f3949;\n font-size:17px;\n line-height:1.58;\n}\n#rio-chat .rio-routepage-v2 .rio-route-understanding {\n margin:0 0 12px;\n color:#625d6b;\n font-size:16px;\n line-height:1.55;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat:nth-child(2) > strong {\n color:#efb72f !important;\n font-size:27px !important;\n letter-spacing:.08em !important;\n}\n#rio-chat .rio-routepage-v2 .rio-route-reassurance {\n margin:0 0 22px;\n color:#17151d;\n font-size:16px;\n font-weight:800;\n line-height:1.5;\n}\n#rio-chat .rio-routepage-v2 .rio-route-first-step {\n padding:20px 22px;\n border:1px solid #ddd5f3;\n border-radius:18px;\n background:#fff;\n box-shadow:0 16px 34px rgba(63,42,145,.08);\n}\n#rio-chat .rio-routepage-v2 .rio-route-first-step .rio-single-kicker {\n margin:0 0 8px;\n}\n#rio-chat .rio-routepage-v2 .rio-route-first-step p {\n margin:0;\n color:#17151d;\n font-size:16px;\n font-weight:700;\n line-height:1.5;\n}\n#rio-chat .rio-routepage-v2 .rio-route-intro-visual {\n display:flex;\n align-items:center;\n justify-content:center;\n min-width:0;\n margin:0;\n}\n#rio-chat .rio-routepage-v2 .rio-route-intro-visual img {\n display:block;\n width:100%;\n max-width:480px !important;\n height:auto;\n object-fit:contain;\n}\n\n/* Vernieuwde appsectie: drie functies en drie heldere productbeelden. */\n#rio-chat .rio-routepage-v2 .rio-app-single {\n display:block !important;\n grid-template-columns:none !important;\n padding:clamp(44px,6vw,86px) clamp(24px,6vw,88px) !important;\n background:#fff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-intro {\n display:grid;\n grid-template-columns:minmax(0,.86fr) minmax(400px,1.14fr);\n align-items:center;\n gap:clamp(36px,6vw,84px);\n width:min(1180px,100%);\n margin:0 auto 42px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-copy h2 {\n max-width:560px;\n margin:0 0 16px !important;\n color:#17151d !important;\n font-size:clamp(34px,3.7vw,52px) !important;\n line-height:1.08 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-copy > p {\n max-width:540px;\n margin:0 0 26px !important;\n color:#625d6b !important;\n font-size:17px !important;\n line-height:1.6 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-features {\n display:grid;\n gap:10px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-feature {\n display:grid;\n grid-template-columns:38px 1fr;\n align-items:start;\n gap:12px;\n padding:15px 16px;\n border:1px solid #e1dbf1;\n border-radius:16px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-feature.is-2 {border-color:#f1dec4; background:#fffaf4;}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-feature.is-3 {border-color:#d9e5f7; background:#f7fbff;}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-number {\n display:grid;\n place-items:center;\n width:34px;\n height:34px;\n border-radius:50%;\n background:#eee9fb;\n color:#3f2a91;\n font-size:11px;\n font-weight:900;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-feature h3 {\n margin:0 0 2px;\n color:#17151d;\n font-size:17px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-feature p {\n margin:0 !important;\n color:#625d6b !important;\n font-size:14px !important;\n line-height:1.45 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-hero {\n margin:0;\n overflow:hidden;\n border:1px solid #e1dbf1;\n border-radius:22px;\n background:#fff;\n box-shadow:0 22px 56px rgba(63,42,145,.13);\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-hero img {\n display:block;\n width:100%;\n aspect-ratio:1 / 1;\n object-fit:contain;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single > .rio-store-buttons {\n justify-content:center;\n width:min(1180px,100%);\n margin:0 auto 32px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-gallery {\n display:grid;\n grid-template-columns:1fr 1fr;\n gap:18px;\n width:min(1180px,100%);\n margin:0 auto 34px;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-shot {\n margin:0;\n overflow:hidden;\n border:1px solid #e1dbf1;\n border-radius:20px;\n background:#fff;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-shot img {\n display:block;\n width:100%;\n aspect-ratio:1 / 1;\n object-fit:contain;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-shot figcaption {\n padding:14px 18px 16px;\n color:#3d3746;\n font-size:14px;\n font-weight:700;\n text-align:center;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single > .rio-app-quote,\n#rio-chat .rio-routepage-v2 .rio-app-single > .rio-app-checks,\n#rio-chat .rio-routepage-v2 .rio-app-single > .rio-app-tiles {\n width:min(1180px,100%);\n margin-left:auto;\n margin-right:auto;\n}\n@media(max-width:820px){\n #rio-chat .rio-routepage-v2 .rio-single-hero {padding:30px 18px 36px !important;}\n #rio-chat .rio-routepage-v2 .rio-route-intro-row {grid-template-columns:1fr; gap:24px;}\n #rio-chat .rio-routepage-v2 .rio-route-intro-copy {max-width:620px;}\n #rio-chat .rio-routepage-v2 .rio-route-intro-copy .rio-single-title {font-size:clamp(34px,10vw,46px);}\n #rio-chat .rio-routepage-v2 .rio-route-intro-visual img {width:min(100%,560px);}\n #rio-chat .rio-routepage-v2 .rio-route-first-step {padding:17px 18px;}\n #rio-chat .rio-routepage-v2 .rio-app-single {padding:38px 18px !important;}\n #rio-chat .rio-routepage-v2 .rio-app-renewed-intro {grid-template-columns:1fr; gap:28px; margin-bottom:28px;}\n #rio-chat .rio-routepage-v2 .rio-app-renewed-copy h2 {font-size:34px !important;}\n #rio-chat .rio-routepage-v2 .rio-app-renewed-gallery {grid-template-columns:1fr;}\n}\n\n/* Routepagina op brede schermen als een rustige, mobiele leesroute. */\n@media(min-width:821px){\n #rio-chat.rio-toont-route .rio-routepop-shell {\n padding:30px 0 90px !important;\n background:#f1edf9 !important;\n }\n #rio-chat.rio-toont-route .rio-resultaat.rio-routepage.rio-routepage-v2,\n #rio-chat .rio-resultaat.rio-routepage.rio-routepage-v2 {\n width:min(520px,calc(100vw - 48px)) !important;\n max-width:520px !important;\n min-width:0 !important;\n margin-left:auto !important;\n margin-right:auto !important;\n overflow:hidden !important;\n border:1px solid #e4ddf3 !important;\n border-radius:28px !important;\n background:#fff !important;\n box-shadow:0 28px 72px rgba(63,42,145,.14) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-headbar {\n width:100% !important;\n max-width:100% !important;\n padding:14px 18px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route {\n display:block !important;\n width:100% !important;\n max-width:100% !important;\n margin:0 !important;\n padding:0 0 92px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section,\n #rio-chat .rio-routepage-v2 .rio-single-section {\n width:100% !important;\n max-width:100% !important;\n min-width:0 !important;\n margin:0 !important;\n padding:44px 24px !important;\n border-right:0 !important;\n border-left:0 !important;\n border-radius:0 !important;\n box-shadow:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-hero {\n display:block !important;\n grid-template-columns:minmax(0,1fr) !important;\n padding-top:40px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-title,\n #rio-chat .rio-routepage-v2 .rio-route-intro-copy .rio-single-title {\n max-width:100% !important;\n font-size:38px !important;\n line-height:1.08 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section h2,\n #rio-chat .rio-routepage-v2 .rio-bridge-card h2,\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > h2,\n #rio-chat .rio-routepage-v2 .rio-app-single h2 {\n max-width:100% !important;\n font-size:30px !important;\n line-height:1.12 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section h3,\n #rio-chat .rio-routepage-v2 .rio-app-single h3 {\n font-size:22px !important;\n line-height:1.2 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section p {\n font-size:16px !important;\n line-height:1.62 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-route-intro-row,\n #rio-chat .rio-routepage-v2 .rio-tolerance-intro-row,\n #rio-chat .rio-routepage-v2 .rio-tolerance-card-row,\n #rio-chat .rio-routepage-v2 .rio-proof-single,\n #rio-chat .rio-routepage-v2 .rio-pro-list,\n #rio-chat .rio-routepage-v2 .rio-proof-stats,\n #rio-chat .rio-routepage-v2 .rio-app-renewed-intro,\n #rio-chat .rio-routepage-v2 .rio-app-renewed-gallery,\n #rio-chat .rio-routepage-v2 .rio-app-tiles,\n #rio-chat .rio-routepage-v2 .rio-final-cta {\n grid-template-columns:minmax(0,1fr) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-route-intro-row,\n #rio-chat .rio-routepage-v2 .rio-app-renewed-intro,\n #rio-chat .rio-routepage-v2 .rio-app-renewed-gallery,\n #rio-chat .rio-routepage-v2 .rio-app-single > .rio-store-buttons,\n #rio-chat .rio-routepage-v2 .rio-app-single > .rio-app-quote,\n #rio-chat .rio-routepage-v2 .rio-app-single > .rio-app-checks,\n #rio-chat .rio-routepage-v2 .rio-app-single > .rio-app-tiles {\n width:100% !important;\n max-width:100% !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-compact,\n #rio-chat .rio-routepage-v2 .rio-workshop-flow {\n display:block !important;\n }\n #rio-chat .rio-routepage-v2 .rio-understand-card {\n display:block !important;\n width:100% !important;\n max-width:100% !important;\n }\n #rio-chat .rio-routepage-v2 .rio-understand-card > *,\n #rio-chat .rio-routepage-v2 .rio-understand-card h3,\n #rio-chat .rio-routepage-v2 .rio-understand-card > p,\n #rio-chat .rio-routepage-v2 .rio-understand-card .rio-behavior-list {\n grid-column:auto !important;\n grid-row:auto !important;\n width:100% !important;\n max-width:100% !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-compact > *,\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > *,\n #rio-chat .rio-routepage-v2 .rio-tolerance-intro-row > *,\n #rio-chat .rio-routepage-v2 .rio-tolerance-card-row > *,\n #rio-chat .rio-routepage-v2 .rio-proof-single > *,\n #rio-chat .rio-routepage-v2 .rio-app-renewed-intro > * {\n grid-column:auto !important;\n grid-row:auto !important;\n max-width:100% !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-image,\n #rio-chat .rio-routepage-v2 .rio-proof-group,\n #rio-chat .rio-routepage-v2 .rio-route-intro-visual {\n width:100% !important;\n max-width:100% !important;\n margin-left:auto !important;\n margin-right:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-group {\n height:auto !important;\n min-height:0 !important;\n align-self:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-copy,\n #rio-chat .rio-routepage-v2 .rio-pro-list,\n #rio-chat .rio-routepage-v2 .rio-proof-stats,\n #rio-chat .rio-routepage-v2 .rio-pro-card,\n #rio-chat .rio-routepage-v2 .rio-proof-stat {\n width:100% !important;\n max-width:100% !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-group img {\n width:100% !important;\n height:auto !important;\n min-height:0 !important;\n object-fit:contain !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-final-cta {\n gap:18px !important;\n text-align:left !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-final-cta .rio-route-button {\n justify-self:start !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-bottom {\n left:50% !important;\n width:min(520px,calc(100vw - 48px)) !important;\n transform:translateX(-50%) !important;\n }\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section > .rio-cycle-steps {\n margin-top:52px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section > .rio-cycle-callout {\n margin-top:44px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-first-step {\n margin:0 !important;\n padding:30px 24px 22px !important;\n background:#fff !important;\n color:#352783 !important;\n font-size:30px !important;\n line-height:1.14 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-head,\n#rio-chat .rio-routepage-v2 .rio-workshop-step-head strong,\n#rio-chat .rio-routepage-v2 .rio-workshop-step-body,\n#rio-chat .rio-routepage-v2 .rio-workshop-step-body li,\n#rio-chat .rio-routepage-v2 .rio-result-step .rio-workshop-step-body h3 {\n font-family:\"Open Sans\",Arial,sans-serif !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-head strong {\n font-size:18px !important;\n line-height:1.3 !important;\n font-weight:800 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-step-body,\n#rio-chat .rio-routepage-v2 .rio-workshop-step-body li {\n font-size:16px !important;\n line-height:1.62 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-result-step .rio-workshop-step-body h3 {\n font-size:18px !important;\n line-height:1.3 !important;\n font-weight:800 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-result-list .rio-single-check {\n color:#5f5876 !important;\n font-size:16px !important;\n line-height:1.62 !important;\n font-weight:400 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-visual {\n display:block !important;\n width:100% !important;\n height:auto !important;\n min-height:0 !important;\n margin-top:24px !important;\n padding:0 !important;\n overflow:visible !important;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve {\n display:block !important;\n height:auto !important;\n overflow:visible !important;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-line {\n display:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-visual::before {\n content:\"\" !important;\n display:block !important;\n position:absolute !important;\n left:36px !important;\n top:28px !important;\n bottom:28px !important;\n width:3px !important;\n border-radius:999px !important;\n background:linear-gradient(180deg,#f28c00 0%,#a58ce7 35%,#6652bd 70%,#f1a43d 100%) !important;\n box-shadow:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-steps {\n position:relative !important;\n inset:auto !important;\n display:grid !important;\n grid-column:auto !important;\n grid-template-columns:minmax(0,1fr) !important;\n grid-auto-flow:row !important;\n grid-auto-columns:auto !important;\n gap:14px !important;\n margin:0 !important;\n padding:0 !important;\n height:auto !important;\n min-height:0 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step,\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-1,\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-2,\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-3,\n#rio-chat .rio-routepage-v2 .rio-change-curve-step.is-4 {\n position:relative !important;\n left:auto !important;\n top:auto !important;\n width:100% !important;\n padding:14px !important;\n grid-template-columns:46px minmax(0,1fr) !important;\n justify-items:start !important;\n align-items:center !important;\n gap:2px 14px !important;\n border:1px solid rgba(255,255,255,.14) !important;\n border-radius:14px !important;\n background:rgba(255,255,255,.07) !important;\n text-align:left !important;\n transform:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-dot {\n grid-row:1 / span 2 !important;\n width:46px !important;\n height:46px !important;\n position:relative !important;\n z-index:1 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve-step strong,\n#rio-chat .rio-routepage-v2 .rio-change-curve-step small {\n grid-column:2 !important;\n margin:0 !important;\n align-self:auto !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-coach-mockup {\n width:100% !important;\n margin:28px 0 0 !important;\n padding:0 !important;\n overflow:visible !important;\n border:0 !important;\n border-radius:0 !important;\n background:transparent !important;\n box-shadow:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-coach-mockup img {\n display:block !important;\n width:100% !important;\n height:auto !important;\n border:0 !important;\n border-radius:0 !important;\n background:transparent !important;\n box-shadow:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-renewed-copy > .rio-digital-coach-note {\n margin:34px 0 0 !important;\n padding:18px 20px !important;\n border:1px solid #e3dcf7 !important;\n border-radius:18px !important;\n background:#f7f4fd !important;\n color:#5f5876 !important;\n font-size:15px !important;\n line-height:1.6 !important;\n box-sizing:border-box !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-offer-title {\n width:min(100%,430px) !important;\n max-width:430px !important;\n margin:38px auto 20px !important;\n padding:0 !important;\n color:#241a5b !important;\n font-size:27px !important;\n line-height:1.22 !important;\n text-align:center !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single > .rio-app-checks {\n width:min(100%,390px) !important;\n margin:0 auto 26px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single > .rio-app-tiles {\n display:grid !important;\n grid-template-columns:repeat(2,minmax(0,1fr)) !important;\n gap:14px !important;\n width:100% !important;\n max-width:100% !important;\n margin:0 auto !important;\n justify-items:center !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single .rio-app-tile,\n#rio-chat .rio-routepage-v2 .rio-app-single .rio-app-tile:nth-last-child(2),\n#rio-chat .rio-routepage-v2 .rio-app-single .rio-app-tile:last-child {\n grid-column:auto !important;\n display:grid !important;\n grid-template-rows:176px minmax(132px,auto) !important;\n width:100% !important;\n min-height:308px !important;\n margin:0 auto !important;\n border-radius:20px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single .rio-app-tile > img {\n width:100% !important;\n height:176px !important;\n padding:2px !important;\n object-fit:contain !important;\n object-position:center !important;\n background:#fff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single .rio-app-tile > div {\n display:flex !important;\n flex-direction:column !important;\n align-items:center !important;\n justify-content:flex-start !important;\n min-height:132px !important;\n padding:14px 12px 16px !important;\n text-align:center !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single .rio-app-tile h3,\n#rio-chat .rio-routepage-v2 .rio-app-single .rio-app-tile p {\n width:100% !important;\n text-align:center !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single .rio-app-tile h3 {\n font-size:17px !important;\n line-height:1.25 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single .rio-app-tile p {\n font-size:13px !important;\n line-height:1.45 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-route h1,\n#rio-chat .rio-routepage-v2 .rio-single-route h2,\n#rio-chat .rio-routepage-v2 .rio-single-route h3,\n#rio-chat .rio-routepage-v2 .rio-route-intro-copy .rio-single-title,\n#rio-chat .rio-routepage-v2 .rio-app-renewed-copy h2,\n#rio-chat .rio-routepage-v2 .rio-app-renewed-feature h3 {\n color:#352783 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-change-curve h3,\n#rio-chat .rio-routepage-v2 .rio-price-single > h2 {\n color:#fff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-route h1,\n#rio-chat .rio-routepage-v2 .rio-single-route h2,\n#rio-chat .rio-routepage-v2 .rio-single-route h3 {\n text-align:left !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-offer-title {\n width:100% !important;\n max-width:100% !important;\n margin-left:0 !important;\n margin-right:0 !important;\n text-align:left !important;\n}\n#rio-chat .rio-routepage-v2 .rio-app-single .rio-app-tile h3 {\n text-align:center !important;\n}\n#rio-chat .rio-routepage-v2 .rio-hopeful-close,\n#rio-chat .rio-routepage-v2 .rio-hopeful-close p {\n color:#5f5876 !important;\n text-align:left !important;\n}\n#rio-chat .rio-routepage-v2 .rio-hopeful-close h2 {\n color:#352783 !important;\n text-align:left !important;\n}\n#rio-chat .rio-routepage-v2 .rio-reviews-single {\n display:grid !important;\n grid-template-columns:minmax(0,1fr) !important;\n gap:18px !important;\n background:#f3effd !important;\n}\n#rio-chat .rio-routepage-v2 .rio-reviews-single > .rio-single-kicker,\n#rio-chat .rio-routepage-v2 .rio-reviews-single > h2,\n#rio-chat .rio-routepage-v2 .rio-reviews-single > .rio-google-review {\n grid-column:1 !important;\n width:100% !important;\n max-width:100% !important;\n}\n#rio-chat .rio-routepage-v2 .rio-reviews-single > h2 {\n margin-bottom:4px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-google-review {\n margin:0 !important;\n padding:24px !important;\n border-color:#f1dfc8 !important;\n border-radius:20px !important;\n background:#fff8f0 !important;\n box-shadow:none !important;\n box-sizing:border-box !important;\n}\n#rio-chat .rio-routepage-v2 .rio-review-avatar {\n flex:0 0 auto !important;\n background:#eee9fb !important;\n border:1px solid #d9cff5 !important;\n color:transparent !important;\n}\n#rio-chat .rio-routepage-v2 .rio-plan-row {\n color:inherit !important;\n text-decoration:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-route {\n padding-bottom:0 !important;\n}\n#rio-chat .rio-resultaat.rio-routepage.rio-routepage-v2 {\n padding-bottom:0 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single {\n margin-bottom:0 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-trial > .rio-trial-plan-list,\n#rio-chat .rio-routepage-v2 .rio-price-trial > .rio-trial-main-cta,\n#rio-chat .rio-routepage-v2 .rio-price-trial > .rio-trial-perks {\n width:min(620px,100%) !important;\n margin-left:auto !important;\n margin-right:auto !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-trial .rio-trial-row {\n border:2px solid #f28c00 !important;\n background:#fff !important;\n box-shadow:0 20px 42px -30px rgba(0,0,0,.62) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-trial .rio-trial-row .rio-plan-row-body {\n min-height:108px !important;\n padding:18px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-trial .rio-trial-row .rio-plan-row-copy strong {\n font-size:18px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-trial .rio-trial-row .rio-plan-row-copy span {\n margin-top:5px !important;\n font-size:14px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-trial .rio-trial-row .rio-plan-row-price strong {\n color:#352783 !important;\n font-size:30px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-trial .rio-trial-main-cta,\n#rio-chat .rio-routepage-v2 .rio-price-trial .rio-trial-main-cta:visited {\n display:flex !important;\n align-items:center !important;\n justify-content:center !important;\n min-height:58px !important;\n margin-top:18px !important;\n padding:14px 22px !important;\n border:0 !important;\n border-radius:14px !important;\n background:#f28c00 !important;\n color:#fff !important;\n font:900 17px/1.2 \"Open Sans\",Arial,sans-serif !important;\n text-align:center !important;\n text-decoration:none !important;\n box-shadow:0 18px 34px -20px rgba(242,140,0,.84) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-trial .rio-trial-main-cta:disabled {\n opacity:1 !important;\n cursor:default !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-trial .rio-trial-perks {\n margin-top:24px !important;\n}\n@media(max-width:767px){\n #rio-chat .rio-routepop:not([hidden]) {\n height:100dvh !important;\n min-height:100dvh !important;\n -webkit-overflow-scrolling:touch;\n overscroll-behavior:contain;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route,\n #rio-chat .rio-resultaat.rio-routepage.rio-routepage-v2 {\n overflow:visible !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-price-single {\n padding-bottom:max(40px,calc(26px + env(safe-area-inset-bottom))) !important;\n }\n}\n\n/* V45: zachtere intake, bredere keuzes en het OpvoedApp-overzicht uit de workshopstijl. */\n#rio-chat:not(.rio-intake-active) .rio-startchips {\n grid-template-columns:repeat(2,minmax(0,1fr)) !important;\n gap:10px !important;\n}\n#rio-chat:not(.rio-intake-active) .rio-startchips button,\n#rio-chat:not(.rio-intake-active) .rio-startchips button:nth-child(n) {\n min-height:62px !important;\n padding:14px 16px !important;\n border:1px solid #ded8ee !important;\n border-radius:14px !important;\n background:#fff !important;\n color:#352783 !important;\n text-align:left !important;\n box-shadow:0 8px 22px rgba(53,39,131,.06) !important;\n}\n#rio-chat:not(.rio-intake-active) .rio-startchips button strong {\n font-size:14px !important;\n line-height:1.3 !important;\n}\n#rio-chat:not(.rio-intake-active) .rio-startchips button.is-selected {\n border-color:#6f5fbd !important;\n background:#f0edff !important;\n box-shadow:0 0 0 3px rgba(111,95,189,.12) !important;\n}\n#rio-chat .rio-meettoestemming a {\n color:#5b48aa;\n font-weight:800;\n text-decoration:underline;\n text-underline-offset:2px;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-image-panel,\n#rio-chat .rio-routepage-v2 .rio-cycle-steps {display:none !important;}\n#rio-chat .rio-routepage-v2 .rio-cycle-diagram {margin-top:28px;}\n#rio-chat .rio-routepage-v2 .rio-proof-group {max-width:430px;margin-inline:auto;}\n#rio-chat .rio-routepage-v2 .rio-workshop-image img {object-fit:contain;background:#fff;}\n#rio-chat .rio-routepage-v2 .rio-app-exact {background:#fff !important;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-head {max-width:820px;margin:0 auto 28px;text-align:center;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-head h2 {margin:0;color:#111;font-size:clamp(30px,4vw,50px);line-height:1.08;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-head h2 span {display:block;color:#352783;text-decoration:underline;text-decoration-color:#f28c00;text-decoration-thickness:4px;text-underline-offset:8px;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-head p {max-width:700px;margin:28px auto 0;color:#403a49;font-size:16px;line-height:1.65;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-layout {display:grid;grid-template-columns:minmax(0,1fr) minmax(280px,1.15fr) minmax(0,1fr);gap:18px;align-items:center;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-column {display:grid;gap:14px;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-card {padding:18px 20px;border-radius:22px;background:#f4f1fb;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-card.is-orange {background:#fff3e5;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-card.is-pink {background:#fff0f3;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-card.is-green {background:#eef8f2;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-card h3 {margin:0 0 5px;color:#352783;font-size:16px;line-height:1.25;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-card p {margin:0;color:#403a49;font-size:13px;line-height:1.55;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-phones {margin:0;align-self:center;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-phones img {display:block;width:100%;max-height:520px;object-fit:contain;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-bottom {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px;}\n#rio-chat .rio-routepage-v2 .rio-app-exact-bottom .rio-app-exact-card {text-align:center;}\n#rio-chat .rio-routepage-v2 .rio-price-single > p {display:none !important;}\n@media(max-width:767px){\n #rio-chat:not(.rio-intake-active) .rio-startchips {grid-template-columns:1fr !important;}\n #rio-chat:not(.rio-intake-active) .rio-startchips button {min-height:54px !important;}\n #rio-chat .rio-routepage-v2 .rio-app-exact-layout {grid-template-columns:1fr;}\n #rio-chat .rio-routepage-v2 .rio-app-exact-phones {grid-row:1;max-width:390px;margin:0 auto 8px;}\n #rio-chat .rio-routepage-v2 .rio-app-exact-bottom {grid-template-columns:1fr;}\n}\n\n/* V46: op desktop gebruikt de route weer de volledige paginabreedte. */\n@media(min-width:821px){\n #rio-chat.rio-toont-route .rio-routepop-shell {\n width:100% !important;\n max-width:none !important;\n padding:0 !important;\n background:#fff !important;\n }\n #rio-chat.rio-toont-route .rio-resultaat.rio-routepage.rio-routepage-v2,\n #rio-chat .rio-resultaat.rio-routepage.rio-routepage-v2 {\n width:100% !important;\n max-width:none !important;\n margin:0 !important;\n overflow:visible !important;\n border:0 !important;\n border-radius:0 !important;\n box-shadow:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route {\n width:100% !important;\n max-width:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-app-single {\n width:100% !important;\n max-width:none !important;\n padding:clamp(64px,7vw,104px) clamp(32px,7vw,112px) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-route-intro-row {\n grid-template-columns:minmax(0,1fr) minmax(380px,.92fr) !important;\n gap:clamp(48px,7vw,110px) !important;\n width:min(1180px,100%) !important;\n max-width:1180px !important;\n margin-inline:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-route-intro-copy {\n max-width:600px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-route-intro-visual img {\n max-width:560px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-intro-row {\n grid-template-columns:minmax(0,.95fr) minmax(420px,1.05fr) !important;\n gap:clamp(42px,6vw,88px) !important;\n width:min(1180px,100%) !important;\n margin-inline:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-tolerance-card-row {\n grid-template-columns:repeat(2,minmax(0,1fr)) !important;\n gap:28px !important;\n width:min(1180px,100%) !important;\n margin:42px auto 0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section > h3,\n #rio-chat .rio-routepage-v2 .rio-cycle-section > p,\n #rio-chat .rio-routepage-v2 .rio-cycle-section > .rio-cycle-callout {\n width:min(960px,100%) !important;\n max-width:960px !important;\n margin-left:auto !important;\n margin-right:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section > .rio-cycle-diagram {\n width:min(860px,100%) !important;\n max-width:860px !important;\n margin:42px auto 0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section > .rio-cycle-callout {\n margin-top:42px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-single {\n display:grid !important;\n grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr) !important;\n align-items:center !important;\n gap:clamp(48px,7vw,96px) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-group {\n max-width:470px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-first-step,\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-image,\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-stepper,\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-cta {\n width:min(960px,100%) !important;\n max-width:960px !important;\n margin-left:auto !important;\n margin-right:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-app-exact-head,\n #rio-chat .rio-routepage-v2 .rio-app-exact-layout,\n #rio-chat .rio-routepage-v2 .rio-app-exact-bottom {\n width:min(1180px,100%) !important;\n max-width:1180px !important;\n margin-left:auto !important;\n margin-right:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-app-exact-layout {\n grid-template-columns:minmax(0,1fr) minmax(320px,1.15fr) minmax(0,1fr) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-reviews-single > * {\n width:min(960px,100%) !important;\n max-width:960px !important;\n margin-left:auto !important;\n margin-right:auto !important;\n }\n}\n\n/* V47: het concrete oefenvoorbeeld blijft op ieder scherm volledig leesbaar. */\n@media(min-width:768px){\n #rio-chat .rio-routepage-v2 .rio-cycle-diagram {\n min-height:470px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node {\n width:245px !important;\n padding:18px 20px 20px !important;\n gap:9px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node.is-1 {\n top:19% !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node.is-2,\n #rio-chat .rio-routepage-v2 .rio-cycle-node.is-3 {\n top:75% !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node strong {\n max-width:205px !important;\n font-size:14px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node small {\n display:block !important;\n max-width:205px !important;\n font-size:12px !important;\n line-height:1.45 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-center {\n top:55% !important;\n width:140px !important;\n height:140px !important;\n }\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-cycle-diagram {\n display:grid !important;\n gap:14px !important;\n min-height:0 !important;\n padding:18px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-loop-line {\n display:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node,\n #rio-chat .rio-routepage-v2 .rio-cycle-node.is-1,\n #rio-chat .rio-routepage-v2 .rio-cycle-node.is-2,\n #rio-chat .rio-routepage-v2 .rio-cycle-node.is-3 {\n position:relative !important;\n left:auto !important;\n top:auto !important;\n width:100% !important;\n transform:none !important;\n grid-template-columns:38px minmax(0,1fr) !important;\n justify-items:start !important;\n column-gap:12px !important;\n row-gap:3px !important;\n padding:14px !important;\n text-align:left !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node span {\n grid-row:1 / span 2 !important;\n width:34px !important;\n height:34px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node strong,\n #rio-chat .rio-routepage-v2 .rio-cycle-node small {\n max-width:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node strong {\n font-size:13px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-node small {\n display:block !important;\n font-size:11.5px !important;\n line-height:1.45 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-center {\n position:relative !important;\n left:auto !important;\n top:auto !important;\n width:100% !important;\n height:auto !important;\n min-height:76px !important;\n transform:none !important;\n border-radius:18px !important;\n }\n}\n\n/* V48: duidelijke overgang van spanning naar oefenen en de eerste workshop. */\n#rio-chat .rio-routepage-v2 .rio-practice-bridge {\n width:min(960px,100%);\n margin:0 auto 42px;\n padding:24px 28px;\n border:1px solid #eadff8;\n border-radius:22px;\n background:#fff;\n box-shadow:0 16px 36px -32px rgba(53,39,131,.4);\n}\n#rio-chat .rio-routepage-v2 .rio-practice-bridge h3 {\n margin:0 0 9px;\n color:#352783;\n font-size:clamp(20px,2.3vw,28px);\n line-height:1.2;\n}\n#rio-chat .rio-routepage-v2 .rio-practice-bridge p {\n margin:0;\n color:#4d4860;\n font-size:15px;\n line-height:1.65;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-to-workshop {\n margin:26px 0 0 !important;\n padding:18px 20px;\n border-radius:16px;\n background:#f4f1fb;\n color:#352783 !important;\n font-weight:800;\n line-height:1.55;\n}\n@media(max-width:767px){\n #rio-chat .rio-routepage-v2 .rio-practice-bridge {\n margin-bottom:30px;\n padding:20px;\n border-radius:18px;\n }\n}\n\n/* V49: compactere routeflow en brede desktoprijen. */\n@media(min-width:821px){\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-app-single {\n padding-top:52px !important;\n padding-bottom:52px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow {\n display:grid !important;\n grid-template-columns:minmax(320px,.82fr) minmax(0,1.18fr) !important;\n column-gap:42px !important;\n row-gap:24px !important;\n align-items:start !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-first-step {\n grid-column:1 / -1 !important;\n width:100% !important;\n max-width:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-image {\n grid-column:1 !important;\n grid-row:2 / span 2 !important;\n width:100% !important;\n max-width:none !important;\n margin:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-stepper {\n grid-column:2 !important;\n grid-row:2 !important;\n width:100% !important;\n max-width:none !important;\n margin:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > .rio-workshop-cta {\n grid-column:2 !important;\n grid-row:3 !important;\n width:100% !important;\n max-width:none !important;\n margin:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-single {\n grid-template-rows:auto auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-stats {\n grid-column:1 / -1 !important;\n grid-row:2 !important;\n display:grid !important;\n grid-template-columns:repeat(3,minmax(0,1fr)) !important;\n gap:16px !important;\n width:100% !important;\n max-width:none !important;\n margin:4px 0 0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-stat {\n width:auto !important;\n min-height:148px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-reviews-single {\n display:grid !important;\n grid-template-columns:repeat(2,minmax(0,1fr)) !important;\n gap:20px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-reviews-single > .rio-single-kicker,\n #rio-chat .rio-routepage-v2 .rio-reviews-single > h2 {\n grid-column:1 / -1 !important;\n width:100% !important;\n max-width:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-reviews-single > .rio-google-review {\n grid-column:auto !important;\n width:100% !important;\n max-width:none !important;\n margin:0 !important;\n }\n}\n@media(max-width:820px){\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-app-single {\n padding-top:30px !important;\n padding-bottom:30px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-stats {\n display:grid !important;\n grid-template-columns:1fr !important;\n gap:12px !important;\n }\n}\n\n/* V50: rustigere paginaritmiek in de stijl van de workshop Executieve Functies. */\n#rio-chat .rio-routepage-v2 .rio-single-hero,\n#rio-chat .rio-routepage-v2 .rio-understand-block,\n#rio-chat .rio-routepage-v2 .rio-workshop-flow,\n#rio-chat .rio-routepage-v2 .rio-app-exact,\n#rio-chat .rio-routepage-v2 .rio-hopeful-close {\n background:#fff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section,\n#rio-chat .rio-routepage-v2 .rio-proof-single,\n#rio-chat .rio-routepage-v2 .rio-reviews-single {\n background:#f7f4fc !important;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-card,\n#rio-chat .rio-routepage-v2 .rio-practice-bridge,\n#rio-chat .rio-routepage-v2 .rio-google-review {\n border:1px solid #e7e0f2 !important;\n box-shadow:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image {\n display:flex !important;\n align-items:center !important;\n justify-content:center !important;\n min-height:0 !important;\n padding:28px !important;\n border-radius:24px !important;\n background:#f7f4fc !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image img {\n display:block !important;\n width:auto !important;\n max-width:100% !important;\n max-height:650px !important;\n object-fit:contain !important;\n background:transparent !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-stepper {\n align-self:center !important;\n}\n#rio-chat .rio-routepage-v2 .rio-google-review {\n height:100% !important;\n background:#fff8f0 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single > h2 {\n width:min(900px,100%) !important;\n margin:0 auto 44px !important;\n color:#fff !important;\n text-align:left !important;\n}\n#rio-chat .rio-routepage-v2 .rio-price-trial > .rio-trial-plan-list {\n margin-top:0 !important;\n}\n@media(min-width:821px){\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-app-single {\n padding-top:56px !important;\n padding-bottom:56px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow,\n #rio-chat .rio-routepage-v2 .rio-proof-single,\n #rio-chat .rio-routepage-v2 .rio-reviews-single {\n column-gap:clamp(28px,4vw,60px) !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-stats {\n margin-top:22px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-reviews-single > h2 {\n margin-bottom:20px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single {\n padding-top:70px !important;\n padding-bottom:74px !important;\n }\n}\n@media(max-width:820px){\n #rio-chat .rio-routepage-v2 .rio-workshop-image {\n margin:22px 0 !important;\n padding:18px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-image img {\n max-height:520px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single > h2 {\n margin-bottom:30px !important;\n }\n}\n\n/* V51: typografie en verhoudingen ontleend aan de workshop Executieve Functies. */\n@media(min-width:821px){\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-single-section,\n #rio-chat .rio-routepage-v2 .rio-single-route > .rio-app-single {\n padding-top:64px !important;\n padding-bottom:64px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-title,\n #rio-chat .rio-routepage-v2 .rio-route-intro-copy .rio-single-title {\n max-width:720px !important;\n font-size:clamp(46px,4.25vw,56px) !important;\n line-height:1.08 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section h2,\n #rio-chat .rio-routepage-v2 .rio-bridge-card h2,\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > h2 {\n font-size:clamp(38px,3.35vw,46px) !important;\n line-height:1.14 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-single-section > p,\n #rio-chat .rio-routepage-v2 .rio-route-intro-copy > p,\n #rio-chat .rio-routepage-v2 .rio-proof-copy > p {\n font-size:17px !important;\n line-height:1.68 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-app-exact-head h2 {\n max-width:940px !important;\n margin-inline:auto !important;\n color:#111 !important;\n font-size:clamp(40px,3.6vw,48px) !important;\n line-height:1.12 !important;\n text-align:center !important;\n }\n #rio-chat .rio-routepage-v2 .rio-app-exact-head h2 span {\n color:#352783 !important;\n text-align:center !important;\n }\n #rio-chat .rio-routepage-v2 .rio-app-exact-head p {\n font-size:17px !important;\n line-height:1.68 !important;\n text-align:center !important;\n }\n #rio-chat .rio-routepage-v2 .rio-reviews-single > h2,\n #rio-chat .rio-routepage-v2 .rio-price-single > h2 {\n font-size:clamp(38px,3.2vw,44px) !important;\n line-height:1.14 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-flow > h2.rio-workshop-first-step {\n font-size:clamp(38px,3.35vw,46px) !important;\n line-height:1.14 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-price-single {\n padding-top:76px !important;\n padding-bottom:78px !important;\n }\n}\n\n/* V52: de stressreacties van kind en ouder zijn direct van elkaar te onderscheiden. */\n#rio-chat .rio-routepage-v2 .rio-tolerance-card-row > .rio-understand-card-child {\n border-color:#7665bf !important;\n background:#6756b4 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-card-row > .rio-understand-card-parent {\n border-color:#352783 !important;\n background:#352783 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-card-row > .rio-understand-card h3,\n#rio-chat .rio-routepage-v2 .rio-tolerance-card-row > .rio-understand-card > p,\n#rio-chat .rio-routepage-v2 .rio-tolerance-card-row > .rio-understand-card .rio-behavior-list strong,\n#rio-chat .rio-routepage-v2 .rio-tolerance-card-row > .rio-understand-card .rio-behavior-list span {\n color:#fff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-card-row > .rio-understand-card .rio-behavior-list li {\n border-color:rgba(255,255,255,.2) !important;\n background:rgba(255,255,255,.08) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-tolerance-card-row > .rio-understand-card .rio-behavior-list li:first-child strong {\n color:#ffd28f !important;\n}\n#rio-chat .rio-routepage-v2 .rio-practice-bridge-under-cards {\n width:100% !important;\n max-width:none !important;\n margin:24px 0 0 !important;\n padding:24px 28px !important;\n border:1px solid #f1d8ba !important;\n border-radius:20px !important;\n background:#fff5e9 !important;\n box-shadow:none !important;\n}\n\n/* V54: één doorlopende workshopintro en een vrijstaande, onderwerpafhankelijke mock-up. */\n#rio-chat .rio-routepage-v2 .rio-workshop-heading {\n grid-column:1 / -1 !important;\n width:100% !important;\n max-width:none !important;\n margin:0 !important;\n text-align:left !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-heading .rio-single-kicker {\n display:block !important;\n margin-bottom:12px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-heading h2 {\n margin:0 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-subtitle {\n max-width:760px !important;\n margin:18px 0 0 !important;\n color:#51496f !important;\n font-size:17px !important;\n line-height:1.65 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image {\n padding:0 !important;\n border:0 !important;\n background:transparent !important;\n box-shadow:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-workshop-image img {\n filter:none !important;\n}\n@media(min-width:821px){\n #rio-chat .rio-routepage-v2 .rio-workshop-heading h2 {\n font-size:clamp(38px,3.35vw,46px) !important;\n line-height:1.14 !important;\n }\n}\n@media(max-width:820px){\n #rio-chat .rio-routepage-v2 .rio-workshop-heading {\n max-width:none !important;\n }\n #rio-chat .rio-routepage-v2 .rio-workshop-subtitle {\n font-size:15px !important;\n }\n}\n\n/* V55: duidelijke tweekoloms overgang met opeenvolgende inzichten. */\n@keyframes rio-route-insight-glow {\n 0%, 25%, 100% {\n border-color:rgba(255,255,255,.16);\n background:rgba(255,255,255,.07);\n box-shadow:none;\n transform:translateY(0);\n }\n 8%, 17% {\n border-color:rgba(255,192,104,.82);\n background:rgba(255,255,255,.16);\n box-shadow:0 0 0 4px rgba(242,140,0,.14), 0 16px 34px -22px rgba(242,140,0,.9);\n transform:translateY(-2px);\n }\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section {\n align-items:center !important;\n background:#fff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section > h3 {\n color:#352783 !important;\n font-size:clamp(31px,3.3vw,48px) !important;\n line-height:1.12 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section > p {\n color:#4d4860 !important;\n font-size:17px !important;\n line-height:1.72 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section > .rio-cycle-diagram {\n display:grid !important;\n grid-template-columns:1fr !important;\n gap:14px !important;\n min-height:0 !important;\n padding:28px !important;\n overflow:hidden !important;\n border:0 !important;\n border-radius:26px !important;\n background:#352783 !important;\n box-shadow:0 24px 54px -34px rgba(53,39,131,.72) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-loop-line,\n#rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-center {\n display:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-node,\n#rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-node.is-1,\n#rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-node.is-2,\n#rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-node.is-3 {\n position:relative !important;\n inset:auto !important;\n display:grid !important;\n grid-template-columns:46px minmax(0,1fr) !important;\n column-gap:14px !important;\n row-gap:3px !important;\n align-items:center !important;\n width:100% !important;\n max-width:none !important;\n min-height:98px !important;\n padding:17px 18px !important;\n border:1px solid rgba(255,255,255,.16) !important;\n border-radius:18px !important;\n background:rgba(255,255,255,.07) !important;\n color:#fff !important;\n text-align:left !important;\n transform:none;\n animation:rio-route-insight-glow 6s ease-in-out infinite;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-node.is-2 { animation-delay:2s; }\n#rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-node.is-3 { animation-delay:4s; }\n#rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-node > span {\n grid-row:1 / span 2 !important;\n width:42px !important;\n height:42px !important;\n border:0 !important;\n background:#f28c00 !important;\n color:#fff !important;\n font-size:18px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-node strong {\n justify-self:start !important;\n max-width:none !important;\n color:#fff !important;\n font-size:17px !important;\n line-height:1.25 !important;\n text-align:left !important;\n}\n#rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-node small {\n display:block !important;\n justify-self:start !important;\n max-width:none !important;\n color:rgba(255,255,255,.84) !important;\n font-size:13.5px !important;\n line-height:1.5 !important;\n text-align:left !important;\n}\n@media(min-width:821px){\n #rio-chat .rio-routepage-v2 .rio-cycle-section {\n display:grid !important;\n grid-template-columns:minmax(0,.88fr) minmax(430px,1.12fr) !important;\n column-gap:clamp(48px,6vw,88px) !important;\n row-gap:18px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section > h3 {\n grid-column:1 !important;\n grid-row:1 !important;\n align-self:end !important;\n width:auto !important;\n max-width:610px !important;\n margin:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section > p {\n grid-column:1 !important;\n grid-row:2 !important;\n align-self:start !important;\n width:auto !important;\n max-width:610px !important;\n margin:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section > .rio-cycle-diagram {\n grid-column:2 !important;\n grid-row:1 / span 2 !important;\n width:100% !important;\n max-width:none !important;\n margin:0 !important;\n }\n}\n@media(max-width:820px){\n #rio-chat .rio-routepage-v2 .rio-cycle-section {\n display:block !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section > h3,\n #rio-chat .rio-routepage-v2 .rio-cycle-section > p {\n width:100% !important;\n max-width:none !important;\n margin-left:0 !important;\n margin-right:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section > p {\n margin-top:14px !important;\n }\n #rio-chat .rio-routepage-v2 .rio-cycle-section > .rio-cycle-diagram {\n width:100% !important;\n max-width:none !important;\n margin:28px 0 0 !important;\n padding:18px !important;\n border-radius:22px !important;\n }\n}\n@media(prefers-reduced-motion:reduce){\n #rio-chat .rio-routepage-v2 .rio-cycle-section .rio-cycle-node {\n animation:none !important;\n }\n}\n\n/* V56: de drie bewijsblokken staan dichter bij het team en vallen duidelijk op. */\n#rio-chat .rio-routepage-v2 .rio-proof-stats {\n margin-top:-20px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat {\n border-color:#352783 !important;\n background:#352783 !important;\n box-shadow:0 18px 34px -28px rgba(38,27,104,.72) !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat:nth-child(2) {\n border-color:#4b3998 !important;\n background:#4b3998 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat:nth-child(3) {\n border-color:#261c66 !important;\n background:#261c66 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat strong,\n#rio-chat .rio-routepage-v2 .rio-proof-stat:nth-child(2) > strong,\n#rio-chat .rio-routepage-v2 .rio-proof-stat:nth-child(3) > strong,\n#rio-chat .rio-routepage-v2 .rio-proof-stat span,\n#rio-chat .rio-routepage-v2 .rio-proof-stat .rio-proof-stat-overline {\n color:#fff !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-stat:nth-child(2) > strong {\n color:#f28c00 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-understand-cta {\n display:inline-flex !important;\n width:auto !important;\n min-height:58px;\n margin:32px auto 0 !important;\n padding:17px 34px !important;\n justify-content:center;\n font-size:17px !important;\n text-decoration:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-single {\n display:block !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-intro-row {\n display:grid;\n grid-template-columns:minmax(0,1fr) minmax(360px,520px);\n gap:clamp(32px,5vw,72px);\n align-items:center;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-intro-row .rio-proof-group {\n width:100% !important;\n height:360px !important;\n min-height:0 !important;\n margin:0 !important;\n border-radius:26px !important;\n overflow:hidden !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-intro-row .rio-proof-group img {\n width:100% !important;\n height:100% !important;\n object-fit:cover !important;\n object-position:center !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-single > .rio-pro-list {\n display:grid !important;\n grid-template-columns:repeat(6,minmax(0,1fr)) !important;\n gap:18px !important;\n width:100% !important;\n margin:36px 0 30px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-single > .rio-pro-list > .rio-pro-card:nth-child(1) { grid-column:1 / 3; }\n#rio-chat .rio-routepage-v2 .rio-proof-single > .rio-pro-list > .rio-pro-card:nth-child(2) { grid-column:3 / 5; }\n#rio-chat .rio-routepage-v2 .rio-proof-single > .rio-pro-list > .rio-pro-card:nth-child(3) { grid-column:5 / 7; }\n#rio-chat .rio-routepage-v2 .rio-proof-single > .rio-pro-list > .rio-pro-card:nth-child(4) { grid-column:2 / 4; }\n#rio-chat .rio-routepage-v2 .rio-proof-single > .rio-pro-list > .rio-pro-card:nth-child(5) { grid-column:4 / 6; }\n#rio-chat .rio-routepage-v2 .rio-proof-single > .rio-pro-list .rio-pro-card {\n display:grid !important;\n grid-template-columns:64px minmax(0,1fr) !important;\n gap:16px !important;\n align-items:start !important;\n min-height:190px;\n padding:22px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-single > .rio-pro-list .rio-pro-card img {\n width:64px !important;\n height:64px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-professional-description {\n margin:10px 0 0;\n color:#5f5a6d;\n font-size:14px;\n line-height:1.55;\n}\n#rio-chat .rio-routepage-v2 .rio-practice-bridge-under-cards {\n position:relative;\n overflow:visible !important;\n padding:18px 0 18px 56px !important;\n border:0 !important;\n border-left:5px solid #6756b4 !important;\n border-radius:0 !important;\n background:transparent !important;\n box-shadow:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-practice-bridge-under-cards::before {\n content:\"“\";\n position:absolute;\n top:4px;\n left:16px;\n color:#f28c00;\n font-family:Georgia,serif;\n font-size:56px;\n font-weight:700;\n line-height:1;\n}\n#rio-chat .rio-routepage-v2 .rio-practice-bridge-under-cards h3,\n#rio-chat .rio-routepage-v2 .rio-practice-bridge-under-cards p {\n width:100% !important;\n max-width:none !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-single > .rio-proof-stats {\n display:grid !important;\n grid-template-columns:repeat(3,minmax(0,1fr)) !important;\n gap:12px !important;\n width:100% !important;\n margin:0 !important;\n padding:0 !important;\n border:0 !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-single > .rio-proof-stats .rio-proof-stat {\n display:flex;\n flex-direction:column;\n justify-content:center;\n min-height:88px !important;\n padding:12px 16px !important;\n border-radius:14px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-single > .rio-proof-stats .rio-proof-stat strong {\n font-size:23px !important;\n}\n#rio-chat .rio-routepage-v2 .rio-proof-single > .rio-proof-stats .rio-proof-stat span {\n margin-top:4px;\n font-size:12.5px;\n}\n#rio-chat .rio-routepage-v2 .rio-price-single > h2 {\n text-align:center !important;\n}\n@media(max-width:820px){\n #rio-chat .rio-routepage-v2 .rio-proof-stats {\n margin-top:0 !important;\n }\n #rio-chat .rio-routepage-v2 .rio-understand-cta {\n width:100% !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-intro-row,\n #rio-chat .rio-routepage-v2 .rio-proof-single > .rio-pro-list,\n #rio-chat .rio-routepage-v2 .rio-proof-single > .rio-proof-stats {\n grid-template-columns:1fr !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-single > .rio-pro-list > .rio-pro-card {\n grid-column:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-intro-row .rio-proof-group {\n height:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-intro-row .rio-proof-group img {\n height:auto !important;\n }\n #rio-chat .rio-routepage-v2 .rio-proof-single > .rio-pro-list .rio-pro-card {\n min-height:0;\n }\n}\n"; document.head.appendChild(style); (function(){ if(!document.getElementById('rio-chat')){ const mount=document.getElementById('rio-chat-embed')||document.currentScript?.parentNode||document.body; if(mount)mount.insertAdjacentHTML('beforeend',`

Wat zou je graag anders willen zien?

★★★★★Meer dan 65.000 ouders geholpen

Kies wat je het meest herkent. Daarna vragen we kort wanneer, waar en hoe vaak je dit merkt.

Wat zou je graag anders willen zien?
R
Jouw route met de OpvoedAppPersoonlijke intake
`); } const $=id=>document.getElementById(id); const assistent=$('rioAssistent'),berichten=$('rioBerichten'),antwoorden=$('rioAntwoorden'),input=$('rioChatinvoer'),composer=$('rioChatformulier'),hoofd=$('rioHoofdinvoer'),voortgang=$('rioVoortgang'); if(!assistent||!berichten||!antwoorden||!input||!composer||!hoofd)return; const testFlow=document.createElement('section'); testFlow.className='rio-testflow'; testFlow.setAttribute('aria-live','polite'); testFlow.innerHTML=`
6 korte vragen

`; const chatWindow=assistent.querySelector('.rio-chatvenster'); chatWindow.querySelector('.rio-chatkop')?.insertAdjacentElement('afterend',testFlow); const testQuestion=$('rioTestQuestion'),testChoices=$('rioTestChoices'),testNote=$('rioTestNote'),testError=$('rioTestError'),testBack=$('rioTestBack'),testNext=$('rioTestNext'),testContext=$('rioTestContext'),testProgressCount=$('rioTestProgressCount'),testProgressBar=$('rioTestProgressBar'); const state={answers:{},idx:0,safety:null}; let timer=null,typeTimer=null,generation=0,busy=false,phase='start',route=null; let intakeRecords=[],intakePosition=-1,selectedChoice='',activeQuestionText='',activeChoices=[],selectedStartTopic=''; function fallbackClientHash(){ const key='rio_luna_client_hash_v1'; try{const saved=localStorage.getItem(key);if(/^[a-f0-9]{64}$/.test(saved||''))return saved;const bytes=new Uint8Array(32);crypto.getRandomValues(bytes);const value=Array.from(bytes,b=>b.toString(16).padStart(2,'0')).join('');localStorage.setItem(key,value);return value;}catch{let value='';for(let i=0;i<64;i++)value+=Math.floor(Math.random()*16).toString(16);return value;} } const onRustSite=location.hostname==='rustinouderschap.nl'||location.hostname.endsWith('.rustinouderschap.nl'); const connection=onRustSite?{endpoint:location.origin+'/wp-json/opvoedapp/v1/intake',client_hash:fallbackClientHash()}:(window.LUNA_CONNECTION||null); const CHECKOUT_URL_MONTH=window.RIO_CHECKOUT_MONTH_URL||'https://betalen.rustinouderschap.nl/checkout/opvoedap-m'; const CHECKOUT_URL_QUARTER=window.RIO_CHECKOUT_QUARTER_URL||'https://betalen.rustinouderschap.nl/checkout/opvoedap-k'; const CHECKOUT_URL_YEAR=window.RIO_CHECKOUT_YEAR_URL||'https://betalen.rustinouderschap.nl/checkout/opvoedap-j'; const CHECKOUT_URL=CHECKOUT_URL_MONTH; const PRICING_EXPERIMENT='pricing_offer_v1'; const TRIAL_CHECKOUT_URL=String(window.RIO_TRIAL_CHECKOUT_URL||'https://betalen.rustinouderschap.nl/checkout/programmario-1686555094').trim(); function resolvePricingVariant(){ const forced=new URLSearchParams(location.search).get('rio_offer'); if(forced==='trial'||forced==='control')return forced; if(window.RIO_PRICING_AB_ENABLED===false||!TRIAL_CHECKOUT_URL)return 'control'; const key='rio_pricing_offer_v1'; try{ const saved=localStorage.getItem(key); if(saved==='trial'||saved==='control')return saved; const assigned=Math.random()<.5?'control':'trial'; localStorage.setItem(key,assigned); return assigned; }catch{return Math.random()<.5?'control':'trial';} } const PRICING_VARIANT=resolvePricingVariant(); const ANALYTICS_ENDPOINT=window.RIO_ANALYTICS_ENDPOINT||'https://zbswlndowiflgafeyfsq.supabase.co/functions/v1/luna-analytics'; const SAVED_ROUTE_KEY='rio_opvoedapp_saved_route_v1'; let analyticsSessionId=''; let analyticsTextConsent=false; let analyticsResearchToken=''; let analyticsStepNumber=0; let analyticsQueue=Promise.resolve(); function newAnalyticsSession(){analyticsSessionId=(crypto.randomUUID?crypto.randomUUID():'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g,c=>{const r=Math.random()*16|0,v=c==='x'?r:r&3|8;return v.toString(16);}));return analyticsSessionId;} function trackAnalytics(event_type,{actor='',step_id='',text='',metadata={}}={}){ if(!analyticsSessionId)newAnalyticsSession(); const mayStoreText=analyticsTextConsent&&(event_type==='message_user'||event_type==='message_bot'); if(event_type==='message_user'||event_type==='message_bot')analyticsStepNumber++; const body={session_id:analyticsSessionId,event_type,actor,step_id,text:mayStoreText?String(text||''):'',text_consent:analyticsTextConsent,research_token:'',redact_names:[state.answers.kind||''].filter(Boolean),page_url:location.href,referrer:document.referrer,metadata:{...metadata,experiment:PRICING_EXPERIMENT,pricing_variant:PRICING_VARIANT,step_number:analyticsStepNumber,text_consent:analyticsTextConsent,consent_version:'gesprek-verbeteren-v2',device:analyticsDevice(),test_run:/^(127\.0\.0\.1|localhost)$/.test(location.hostname)||new URLSearchParams(location.search).get('rio_test')==='1'}}; analyticsQueue=analyticsQueue.catch(()=>null).then(async()=>{body.research_token=analyticsResearchToken;try{const response=await fetch(ANALYTICS_ENDPOINT,{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(body),keepalive:true,credentials:'omit'});const result=await response.json();if(response.ok&&result.research_token)analyticsResearchToken=result.research_token;return result;}catch{return null;}}); return analyticsQueue; } const analyticsMilestones={page:new Set(),route:new Set()}; function analyticsDevice(){return window.innerWidth<768?'mobiel':window.innerWidth<1100?'tablet':'desktop';} function trackScrollMilestones(scope,current,total){ if(!analyticsSessionId||total<=0)return; const depth=Math.max(0,Math.min(100,Math.round(current/total*100))); [25,50,75,90,100].forEach(mark=>{if(depth{ analyticsScrollQueued=false; const routeElement=phase==='route'?document.querySelector('#rio-chat .rio-routepage-v2'):null; if(routeElement){ if(scroller&&scroller.scrollHeight>scroller.clientHeight){ trackScrollMilestones('route',scroller.scrollTop+scroller.clientHeight,scroller.scrollHeight); return; } const rect=routeElement.getBoundingClientRect(),routeTop=rect.top+window.scrollY,viewed=window.scrollY+window.innerHeight-routeTop; trackScrollMilestones('route',viewed,routeElement.scrollHeight); return; } const root=document.documentElement; trackScrollMilestones('page',window.scrollY+window.innerHeight,Math.max(root.scrollHeight,document.body.scrollHeight)); }); } window.addEventListener('scroll',()=>queueAnalyticsScroll(),{passive:true}); let customQuestion='',customChoices=null,currentStep=null,lastAnsweredStep=null,routeStepHandler=null,pendingReflectionCorrection=false;let errorBubble=null; async function backend(action,meta={}){ if(!connection)return null; const controller=new AbortController();const timeout=setTimeout(()=>controller.abort(),action==='route'?55000:20000); const allowedAnswerKeys=['kind','leeftijd','gezin','gezin_extra','probleem','doorvraag','doorvraag_extra','frequentie','achtergrond','oudergevoel','geprobeerd','diagnose','hulp','jij','eerste_anders','safety_context']; const answers=Object.fromEntries(allowedAnswerKeys.filter(key=>Object.prototype.hasOwnProperty.call(state.answers,key)).map(key=>[key,state.answers[key]])); const payload={action,answers,client_hash:connection.client_hash||connection.clientHash||'',...meta}; try{ const request=async(useNonce=true)=>{const headers={'Content-Type':'application/json'};if(useNonce&&connection.nonce)headers['X-WP-Nonce']=connection.nonce;const response=await fetch(connection.endpoint,{method:'POST',credentials:useNonce?'same-origin':'omit',headers,body:JSON.stringify(payload),signal:controller.signal});let data={};try{data=await response.json();}catch{}return {response,data};}; let result=await request(true); const errorCode=result.data?.error||result.data?.code||''; if(!result.response.ok&&errorCode==='rest_cookie_invalid_nonce')result=await request(false); if(!result.response.ok){const err=new Error('request');err.code=result.data?.error||result.data?.code||('http_'+result.response.status);throw err;} return result.data; }finally{clearTimeout(timeout);} } async function remote(action,done,retry,meta={}){ if(busy)return; if(errorBubble){errorBubble.parentElement?.remove();errorBubble=null;} if(!connection){done(null);return;} const g=generation;busy=true;input.disabled=false;antwoorden.replaceChildren(); let received=false;const waiting=action==='route'?routeLoadingBubble():typingBubble(); try{const data=await backend(action,meta);if(g!==generation)return;if(waiting.parentElement)waiting.parentElement.remove();busy=false;input.disabled=false; if(data.safety_level&&data.safety_level!=='normal'){safety(data.safety_level==='acute'?'acuut':data.category==='self'?'zelf':'zorgen',()=>{state.answers.safety_context='De ouder geeft aan dat er op dit moment geen direct gevaar is. De eerdere zorg is besproken. Reeds besproken signalen: '+JSON.stringify(Object.fromEntries(Object.entries(state.answers).filter(([k])=>k!=='safety_context'))).slice(0,1200);remote(action,done,retry,meta);});return;} received=true;done(data); }catch(e){if(g!==generation)return;if(waiting.parentElement)waiting.parentElement.remove();busy=false;input.disabled=false;if(action==='route'){composer.hidden=true;closeRouteModal();}else{composer.hidden=false;} const codes={catalog_not_approved:'AANBOD-CONTROLE',rate_limited:'LIMIET',not_configured:'INSTELLINGEN',unauthorized:'VERBINDING',UNAUTHORIZED_NO_AUTH_HEADER:'SUPABASE-AUTH',invalid_request:'AANVRAAG',rest_cookie_invalid_nonce:'SESSIE',temporarily_unavailable:'SERVER',model:'AI-ANTWOORD',incomplete:'AI-ONVOLLEDIG',database:'KENNISBANK',invalid_output:'AI-FORMAAT'}; const code=received?'WEERGAVE':codes[e.code]||(e.name==='AbortError'?'TIMEOUT':'VERBINDING'); if(action==='route'&&typeof done==='function'){ trackAnalytics('error',{step_id:'route',metadata:{code,action:'route'}}); const fallbackRoute=sanitize(localRoute()); if(fallbackRoute){trackAnalytics('route_fallback',{step_id:'route',metadata:{code,action:'route'}});done({route:fallbackRoute,fallback:true});return;} errorBubble=message('Het lukt op dit moment niet om je persoonlijke route te laden. Je antwoorden zijn niet weg. Probeer het opnieuw.','bot',false); buttons([['Route opnieuw proberen',()=>remote(action,done,retry,meta)]]); return; } if(action!=='route'&&typeof retry==='function'){retry();return;} errorBubble=message('Je route kon nog niet worden getoond. Je antwoorden blijven bewaard in dit venster. Probeer het opnieuw. (Code: '+code+')');buttons([['Opnieuw proberen',()=>remote(action,done,retry,meta)]]);} } const examples=['Mijn kind wordt om alles boos en ik weet niet hoe ik moet reageren…','Elke ochtend eindigt in strijd om aankleden en vertrekken…','Mijn kind luistert pas wanneer ik zelf boos word…','Mijn dochter raakt snel overprikkeld…']; let ex=0,pos=0,del=false; function animate(){clearTimeout(typeTimer);if(assistent.classList.contains('rio-actief')||document.activeElement===hoofd||hoofd.value)return; $('rioTypewriter').style.display='block';const text=examples[ex];$('rioGetypteTekst').textContent=text.slice(0,pos); if(!del&&pos0)pos--;else{del=false;ex=(ex+1)%examples.length;} typeTimer=setTimeout(animate,del?18:42);} function scrollMessages(){requestAnimationFrame(()=>{berichten.scrollTop=berichten.scrollHeight;});} function routeMessagesCanScroll(){ return berichten&&berichten.scrollHeight>berichten.clientHeight+2; } function scrollMessagesFromComposer(delta){ if(!routeMessagesCanScroll()||!delta)return false; const max=berichten.scrollHeight-berichten.clientHeight; const next=Math.max(0,Math.min(max,berichten.scrollTop+delta)); if(next===berichten.scrollTop)return false; berichten.scrollTop=next; return true; } function handleComposerWheel(event){ if(scrollMessagesFromComposer(event.deltaY))event.preventDefault(); } let composerTouchY=null; function handleComposerTouchStart(event){ composerTouchY=event.touches&&event.touches.length?event.touches[0].clientY:null; } function handleComposerTouchMove(event){ if(composerTouchY===null||!event.touches||!event.touches.length)return; const y=event.touches[0].clientY; const delta=composerTouchY-y; if(scrollMessagesFromComposer(delta)){ composerTouchY=y; event.preventDefault(); } } [composer,antwoorden,input].filter(Boolean).forEach(el=>el.addEventListener('wheel',handleComposerWheel,{passive:false})); function message(text,who='bot',store=true){const row=document.createElement('div'),bubble=document.createElement('div');row.className='rio-bericht rio-bericht-'+who;bubble.className='rio-bubbel';bubble.textContent=text;row.appendChild(bubble);berichten.appendChild(row);scrollMessages();if(store&&text&&text!=='…'&&!/^Aan het typen/.test(text))trackAnalytics(who==='gebruiker'?'message_user':'message_bot',{actor:who==='gebruiker'?'user':'bot',step_id:currentStep?.id||phase,text,metadata:{antwoordlengte_tekens:who==='gebruiker'?String(text).length:0}});return bubble;} function typingBubble(){ const row=document.createElement('div'),bubble=document.createElement('div'); row.className='rio-bericht rio-bericht-bot';bubble.className='rio-bubbel rio-typindicator'; bubble.innerHTML='Aan het typen'; row.appendChild(bubble);berichten.appendChild(row);scrollMessages();return bubble; } function routeLoadingBubble(){ const row=document.createElement('div'),bubble=document.createElement('div'); row.className='rio-bericht rio-bericht-bot'; bubble.className='rio-bubbel rio-route-loader'; bubble.innerHTML='Persoonlijke route ladenDe OpvoedApp maakt je route op basis van wat je net vertelde.'; row.appendChild(bubble);berichten.appendChild(row);scrollMessages(); return bubble; } function buttons(options){antwoorden.replaceChildren();for(const [label,fn] of options){const b=document.createElement('button');b.type='button';b.className='rio-antwoordknop';b.textContent=label;b.onclick=()=>{if(busy)return;const typed=input.value.trim();if(phase==='intake'&&typed){answer(typed);return;}fn();};antwoorden.appendChild(b);}} function say(text,opts=[]){clearTimeout(timer);busy=true;input.disabled=false;antwoorden.replaceChildren();const mark=typingBubble();const g=generation;timer=setTimeout(()=>{if(g!==generation)return;mark.parentElement.remove();message(text);busy=false;input.disabled=false;buttons(opts);},300);} function typeSay(text,opts=[]){ clearTimeout(timer);busy=true;input.disabled=false;antwoorden.replaceChildren(); const bubble=message('');const g=generation;let i=0; const tick=()=>{if(g!==generation)return;bubble.textContent=text.slice(0,i);scrollMessages(); if(ilower(choice)===t))return true; return /^(ja|jep|jawel|nee|nope|ok[eé]?|klopt|dit klopt|geen idee|weet ik niet|ik weet het niet|ik weet het niet precies|liever niet zeggen|liever overslaan|adhd|add|ass|hsp|autisme)$/i.test(t); } function randomWordScore(word){ const pairs=new Set('aa ae ai al an ar au be bo br ch de di do dr ee ei el en er et eu ge gr he hi ie ik in is je ka ke ki kl ko kr la le li lo ma me mi mo na ne ni no oe om on oo op ou ov pa pe pi po pr ra re ri ro ru sa se si sl sm sn so sp st ta te th ti to tr ui va ve vi vo vr wa we wi wo za ze zi zo'.split(' ')); let total=0,odd=0; for(let i=0;iw.length<=16)&&words.some(w=>/[aeiouy]/.test(w)))return words.every(w=>w.length>=6&&randomWordScore(w)>.78); if(words.length===1&&words[0].length>=6&&randomWordScore(words[0])>.72)return true; return words.length<=3&&words.every(w=>w.length>=4&&randomWordScore(w)>.78); } function nonsenseReply(step=null,start=false){ const text=start?'Ik kan hier nog niet goed mee verder. Typ kort wat er thuis speelt, bijvoorbeeld wanneer het misgaat of welk gedrag je ziet.':'Ik kan hier nog niet goed mee verder. Wil je iets concreter typen wat er gebeurt, wanneer het gebeurt of wat je bedoelt?'; if(start&&startHint){startHint.textContent=text;startHint.classList.add('rio-starttekst-fout');hoofd.focus();hoofd.select();return;} input.value=''; say(text,(step?.c||[]).map(t=>[t,()=>answer(t)])); } function greetingOnly(value){ const text=cleanAiText(value).toLowerCase().replace(/[.,!?]+$/g,'').trim(); return /^(hoi|hallo|hey|hee|hi|goedemorgen|goedemiddag|goedenavond|goedendag|hoi daar|hallo daar)$/.test(text); } function greetingReply(){ const text='Hoi, fijn dat je er bent. Vertel kort wat er thuis speelt of waar je graag hulp bij wilt.'; if(startHint){startHint.textContent=text;startHint.classList.remove('rio-starttekst-fout');} hoofd.value=''; $('rioTypewriter').style.display='none'; clearTimeout(typeTimer); hoofd.focus(); } function looksLikeSpam(value){ const raw=String(value||''),text=raw.toLowerCase().trim(); if(!text)return false; const urls=text.match(/(?:https?:\/\/|www\.)\S+/g)||[]; const promotion=/\b(casino|crypto(?:currency)?|bitcoin|forex|viagra|cialis|backlinks?|seo service|marketing agency|buy now|click here|limited offer|free money|earn money|make money fast|followers|online pharmacy|loan approval|promo code|discount code)\b/i.test(text); const code=/<\/?(?:script|iframe|object|embed|style|form)\b|javascript:|data:text\/html/i.test(raw); const repeatedChars=/(.)\1{11,}/i.test(text); const words=text.match(/[a-z0-9]+/g)||[]; const counts={};for(const word of words)counts[word]=(counts[word]||0)+1; const repeatedWords=Object.values(counts).some(count=>count>=8); const letters=raw.match(/[a-z]/gi)||[],upper=raw.match(/[A-Z]/g)||[]; const shouting=letters.length>=40&&upper.length/letters.length>.82; const linkDump=urls.length>=2||(urls.length===1&&words.length<=5); return raw.length>4000||code||repeatedChars||repeatedWords||shouting||linkDump||(promotion&&(urls.length>0||words.length<30)); } function spamReply(step=null,start=false){ const text='Dit lijkt op spam of geplakte reclame. Beschrijf zonder links kort wat er met je kind gebeurt en wanneer het lastig wordt.'; if(start&&startHint){startHint.textContent=text;startHint.classList.add('rio-starttekst-fout');hoofd.value='';hoofd.focus();return;} input.value=''; say(text,(step?.c||[]).map(choice=>[choice,()=>answer(choice)])); } function extractAgeMention(value){ const t=lower(value); let m=t.match(/\b(\d+(?:[,.]\d+)?)\s*(maand|maanden)\b/); if(m&&ageRange(m[0]))return m[0].replace('.',','); m=t.match(/\b(\d+(?:[,.]\d+)?)\s*(jaar|jr|j)\b/); if(m&&ageRange(m[0]))return m[1].replace('.',',')+' jaar'; m=t.match(/\b(\d{1,2})\s*[- ]?jarige\b/); if(m&&ageRange(m[1]))return m[1]+' jaar'; m=t.match(/\b(?:dochter|zoon|kind|puber|peuter|kleuter|ze|zij|hij|die)\b.{0,24}\b(?:is|wordt|van)\s*(\d{1,2})\b/); if(m&&ageRange(m[1]))return m[1]+' jaar'; m=t.trim().match(/^(\d+(?:[,.]\d+)?)$/); if(m&&ageRange(m[1]))return m[1].replace('.',',')+' jaar'; const words={een:1,'één':1,twee:2,drie:3,vier:4,vijf:5,zes:6,zeven:7,acht:8,negen:9,tien:10,elf:11,twaalf:12,dertien:13,veertien:14,vijftien:15,zestien:16,zeventien:17,achttien:18}; for(const [word,num] of Object.entries(words)){ const re=new RegExp(`\\b(?:${word})\\s*(?:jaar|jarige)\\b|\\b(?:dochter|zoon|kind|puber|peuter|kleuter|ze|zij|hij|die)\\b.{0,24}\\b(?:is|wordt|van)\\s*${word}\\b`,'i'); if(re.test(t))return num+' jaar'; } return ''; } function isAgeRangeText(value){return /^\d+\s*[–—-]\s*\d+(?:\s*jaar)?$/i.test(cleanAiText(value));} function normalizeAgeAnswer(value){const text=cleanAiText(value);if(isAgeRangeText(text))return text;const age=extractAgeMention(text);if(age)return age;if(ageRange(text))return /\b(maand|maanden|jaar|jr|j)\b/i.test(text)?text:text+' jaar';return '';} function formatChildName(value){ const clean=cleanAiText(value).replace(/[.,;:!?]+$/,'').split(/\s+/).slice(0,2).join(' '); if(!clean||clean.length>34)return ''; return clean.split(/([\s-])/).map(part=>/^[a-zà-ÿ]/.test(part)?part.charAt(0).toUpperCase()+part.slice(1):part).join(''); } function extractChildName(value){ const text=cleanAiText(value); if(/liever (?:niet|geen naam)/i.test(text))return ''; const patterns=[ /\b(?:dochter|zoon|kind|puber|peuter|kleuter)\s+(?:heet|genaamd|noemen we|noem ik)\s+([A-Za-zÀ-ÿ][A-Za-zÀ-ÿ'’-]{1,28})\b/i, /\b(?:dochter|zoon|kind|puber|peuter|kleuter)\s+([A-Za-zÀ-ÿ][A-Za-zÀ-ÿ'’-]{1,28})\s+(?:van|is|wordt|heeft|loopt|raakt|wil|kan)\b/i ]; const stop=/^(van|is|wordt|heeft|loopt|raakt|wil|kan|veel|snel|niet|vaak|thuis|school)$/i; for(const pattern of patterns){ const match=text.match(pattern); if(match&&!stop.test(match[1]))return formatChildName(match[1]); } return ''; } function normalizeKindAnswer(value){ const text=cleanAiText(value); if(/liever (?:niet|geen naam)/i.test(text))return 'je kind'; if(extractAgeMention(text)&&/\b(dochter|zoon|kind|puber|peuter|kleuter|ze|zij|hij|die|jaar|maand)\b/i.test(text))return 'je kind'; return text; } function validKindAnswer(value){ const text=lower(cleanAiText(value)).replace(/[.!?]+$/,'').trim(); if(/liever (?:niet|geen naam)/.test(text))return true; if(!text||text.split(/\s+/).length>2||text.length>34)return false; return !/^(fijn|goed|prima|oke|oké|ja|nee|klopt|bedankt|dank je|geen idee|weet ik niet|mijn kind|kind|zoon|dochter)$/i.test(text); } function cleanQuestion(value){ const text=cleanAiText(value);if(!text)return topicCopy().vraag; const words=text.replace(/[.]+$/,'').split(/\s+/).slice(0,26).join(' '); return words.endsWith('?')?words:words+'?'; } function cleanBotPrompt(value,fallback){ const text=cleanAiText(value);if(!text)return fallback; const parts=(text.match(/[^.!?]+[.!?]?/g)||[text]).map(s=>s.trim()).filter(Boolean); let out=parts.slice(0,3).join(' '); if(!/\?$/.test(out))out=cleanQuestion(out); if(unsupportedContext(out))return fallback; return out.length>440?cleanQuestion(out.slice(0,440)):out; } function cleanChoiceList(list,fallback){ const out=(Array.isArray(list)?list:[]).map(cleanAiText).filter(x=>x&&x.length<=42&&!unsupportedContext(x)).slice(0,5); return out.length>=2?out:fallback; } function addCheckQuestion(text){ const base=cleanAiText(text).replace(/\?+$/,'').trim(); if(!base)return 'Klopt dit zo?'; if(/klopt dit|herken je dit|past dit/i.test(base))return base.replace(/[. ]*$/,'?'); return base+' Klopt dit zo?'; } function cleanReflection(value){ const fallback=localReflection(); const text=cleanAiText(value);if(!text)return addCheckQuestion(fallback); const parts=(text.match(/[^.!?]+[.!?]?/g)||[text]).map(s=>s.trim()).filter(s=>{ const lowerSentence=lower(s).replace(/[?.!]+$/,'').trim(); if(/\?$/.test(s))return false; if(/klopt dit|herken je dit|past dit/.test(lowerSentence))return false; if(/^(wat|hoe|waar|wanneer|wie|welke|waarom|kun je|kan je|wil je|zou je|merk je|doe je|wat doe|wat gebeurt)\b/.test(lowerSentence))return false; if(/\b(ik wil|ik ga|ik neem|ik kijk|ik vraag|nog weten|wil ik weten|wat er bij jou gebeurt|wat jij doet|wat je doet|hoe jij reageert)\b/.test(lowerSentence))return false; return true; }).map(s=>s.replace(/\?+$/,'.')); const clean=parts.slice(0,4).join(' '); return addCheckQuestion(clean.replace(/\?+$/,'.')||fallback); } function hasParentFeeling(value){ const t=lower(value); return /\bik\b.{0,45}\b(boos|kwaad|woedend|frustr|machteloos|moe|uitgeput|op|bang|bezorgd|paniek|schrik|schuld|falen|trek me terug|harder praten|rustig blijven)\b/.test(t) || /\b(mijn|m'n)\s+(geduld|energie|reactie|emotie|spanning)\b/.test(t); } function extractParentFeeling(value){ const text=cleanAiText(value); if(!hasParentFeeling(text))return ''; const sentence=(text.match(/[^.!?]*(?:\bik\b|\bmijn\b|\bm'n\b)[^.!?]*/i)||[text])[0]; return sentence.slice(0,160); } function extractDiagnosisContext(value){ const text=cleanAiText(value),t=lower(text); if(!/\b(adhd|add|autisme|ass|diagnose|onderzoek|vermoeden|vermoed|hulp|wachtlijst|ggz|wijkteam|jeugdteam|therapie|begeleiding)\b/.test(t))return ''; return text.slice(0,180); } function captureKnownContext(value){ const child=extractChildName(value);if(child&&!state.answers.kind)state.answers.kind=child; const age=extractAgeMention(value);if(age&&!state.answers.leeftijd)state.answers.leeftijd=age; const context=extractDiagnosisContext(value);if(context&&!state.answers.diagnose)state.answers.diagnose=context; if(context&&/\b(hulp|wachtlijst|ggz|wijkteam|jeugdteam|therapie|begeleiding)\b/i.test(context)&&!state.answers.hulp)state.answers.hulp=context; } function applyReflectionCorrection(value){ const text=cleanAiText(value).replace(/^(nee|nope|klopt niet|dat klopt niet|niet helemaal|nee,?)\s*/i,'').trim()||cleanAiText(value); if(!text)return false; const age=extractAgeMention(text);if(age)state.answers.leeftijd=age; const child=extractChildName(text);if(child)state.answers.kind=child; const target=state.answers.doorvraag_extra?'doorvraag_extra':'doorvraag'; state.answers[target]=[state.answers[target],`Correctie: ${text}`].filter(Boolean).join(' '); route=null;customQuestion='';customChoices=null;currentStep=null; return true; } function contextText(extra=''){return [state.answers.probleem,state.answers.doorvraag,state.answers.doorvraag_extra,state.answers.gezin,state.answers.gezin_extra,extra].filter(Boolean).join(' ');} function physicalWithSibling(value){const t=lower(value||contextText());return /\b(slaat|slaan|geslagen|schopt|duwt|bijt|krabt|gooit|trekt|duwen)\b/.test(t)&&/\b(broer|broertje|zus|zusje|andere kind|kinderen)\b/.test(t);} function empathyLine(value){ const t=lower(value); if(physicalWithSibling(t))return 'Dat klinkt echt zwaar thuis, zeker omdat je in één moment bij je kind én bij een ander kind moet zijn.'; if(/niet te genieten|thuis.*zwaar|hele dag|elke dag|steeds|altijd/.test(t))return 'Dat klinkt zwaar, vooral omdat het thuis zo vaak terugkomt.'; if(/drift|bui|buien|boos|woed|ontplof|overstuur|schreeuw/.test(t))return 'Driftbuien of heftige boosheid kunnen thuis veel spanning geven.'; if(/niet luister|luistert niet|strijd|grens|nee|doordram|discuss/.test(t))return 'Steeds opnieuw strijd kost veel energie, zeker als gewone momenten daardoor groot worden.'; if(/slaap|slapen|bed|nacht|wakker/.test(t))return 'Als slapen steeds vastloopt, kan dat de hele avond kleuren.'; if(/angst|bang|paniek|onzeker|piek/.test(t))return 'Dat kan kwetsbaar voelen, omdat spanning bij je kind niet altijd meteen te plaatsen is.'; if(hasScreenContext(t))return 'Schermmomenten kunnen snel omslaan, zeker als stoppen lastig is.'; return 'Dank je dat je dit zo open opschrijft.'; } function siblingQuestion(){ return physicalWithSibling()?`Wat gebeurt er precies met broer of zus op het moment dat het misgaat?`:`Wat doen broer, zus of andere kinderen precies op dat moeilijke moment?`; } function siblingChips(){return physicalWithSibling()?['Vooral beschermen','Het begint tussen hen','Allebei','Ik weet het niet precies']:['Alleen achtergrond','Ze lokken elkaar uit','Het gaat om delen of wachten','Een kind voelt zich tekortgedaan','Ik weet het niet precies'];} function topicCopy(){ const topic=topicOf(),n=name(); const copy={ strijd:{opening:'Eén concreet voorbeeld helpt meer dan een algemene verklaring.',vraag:`Wat gebeurt er meestal vlak vóór ${n} boos wordt, niet meer luistert of de strijd begint?`,chips:['Een grens of nee','Stoppen met iets leuks','Overgang naar iets anders','Vermoeidheid of honger','Ik weet het niet precies']}, scherm:{opening:'Het stopmoment zelf is belangrijk om goed te begrijpen.',vraag:'Wat gebeurt er in de tien minuten vóórdat het scherm uit moet?',chips:['Er is geen waarschuwing','Ik waarschuw meerdere keren','Het kind zit helemaal verdiept','Er komt meteen boosheid','We hebben haast']}, bed:{opening:'Dan is vooral belangrijk welk stukje van de avond vastloopt.',vraag:`Welk moment van het slapen loopt het meest vast bij ${n}?`,chips:['Naar boven gaan','In bed blijven','Afscheid nemen','Bang of onrustig zijn','Steeds opnieuw roepen']}, ritme:{opening:'Bij routines zit de spanning vaak in één klein onderdeel.',vraag:`Welk stukje van de ochtend of routine geeft de meeste spanning bij ${n}?`,chips:['Aankleden','Eten of tandenpoetsen','Vertrekken','Te veel prikkels','Alles duurt lang']}, angst:{opening:'Bij spanning wil je eerst weten waar je kind precies op reageert.',vraag:`Waar lijkt ${n} op dat moment vooral bang of onzeker over?`,chips:['Iets nieuws proberen','Alleen zijn','Fouten maken','Naar school of opvang','Ik weet het niet']}, plannen:{opening:'Dan is vooral belangrijk waar het vastloopt in de taak zelf.',vraag:`Waar loopt ${n} vooral vast: beginnen, plannen, onthouden of afmaken?`,chips:['Beginnen','Plannen','Afgeleid raken','Tijd inschatten','Afmaken']}, emotie:{opening:'Bij grote emoties helpt het om het eerste seintje te kennen.',vraag:`Waaraan merk je als eerste dat het te veel wordt voor ${n}?`,chips:['Boos worden','Huilen','Terugtrekken','Heel druk worden','Niets meer kunnen hebben']}, puber:{opening:'Dan wil je scherp krijgen waar het gesprek precies kantelt.',vraag:`Waarover ontstaat de meeste discussie met ${n}?`,chips:['Regels en afspraken','School of huiswerk','Schermtijd','Respectvolle toon','Zelfstandigheid']}, gezin:{opening:'Dan wil je weten wat er feitelijk tussen de kinderen gebeurt.',vraag:siblingQuestion(),chips:siblingChips()}, breed:{opening:'Eén concreet moment is genoeg om de route beter te laten passen.',vraag:`Wat gebeurt er meestal vlak vóór het moment waarop het misgaat met ${n}?`,chips:['Een overgang','Een grens','Drukte of prikkels','Vermoeidheid','Ik weet het nog niet']} }; return copy[topic]||copy.breed; } function emotionLine(value){ const t=lower(value); if(/rustig (te )?blijven|ik blijf rustig|probeer kalm|kalm (te )?blijven/.test(t))return 'Je probeert rustig te blijven, ook als het moment lastig wordt. Dat laat zien hoeveel aandacht je hier al aan geeft.'; if(/schuld|falen|slechte ouder|niet goed/.test(t))return 'Dat schuldgevoel kan hard binnenkomen, juist omdat je het graag goed wilt doen.'; if(/\bmoe\b|uitgeput|\bop\b|kan niet meer/.test(t))return 'Je klinkt echt moe. Als je al zo lang probeert vol te houden, mag eerst gezien worden hoeveel dit van je vraagt.'; if(/machteloos|radeloos|weet niet wat/.test(t))return 'Je weet op zo’n moment niet goed meer wat helpt. Dat kan heel machteloos voelen, zeker wanneer het opnieuw gebeurt.'; if(/terugtrek|stil|dichtklap/.test(t))return 'Je trekt je op zo’n moment terug of wordt stiller. Dank je dat je ook dit deel van jezelf zo eerlijk benoemt.'; if(/harder praat|stem verhef|schreeuw/.test(t))return 'Je merkt dat je stem op zo’n moment harder wordt. Dat eerlijk kunnen zeggen is niet niks.'; if(/bang|bezorgd|paniek|schrik/.test(t))return 'Het is logisch dat dit je raakt; je hoeft het niet groter te maken om het serieus te nemen.'; if(/boos|kwaad|woedend|frustr/.test(t))return 'Het is begrijpelijk dat je eigen spanning oploopt als dit steeds terugkomt.'; return 'Dank je dat je ook vertelt wat dit met jou doet. Dat hoort net zo goed bij het moment dat we proberen te begrijpen.'; } function parentIsExhausted(value){ const t=lower(cleanAiText(value)); const exhausted=/\b(ik ben|ik voel me|ik raak|ik zit er)\b.{0,35}\b(op|uitgeput|leeg|doodmoe|oververmoeid)\b|\bik kan (dit )?niet meer\b|\bmijn batterij is leeg\b/.test(t); const acute=/\b(zelfmoord|su[iï]cide|mezelf iets aandoen|niet meer leven|er niet meer zijn|iemand iets aandoen|direct gevaar)\b/.test(t); return exhausted&&!acute; } function exhaustionReply(){ return 'Dat klinkt heel zwaar. Als je zo weinig over hebt, is het logisch dat zelfs een kleine verandering veel kan voelen. Je hoeft dit hier niet alleen op te lossen. Ik stel nog een paar gerichte vragen, zodat jouw route klein, haalbaar en passend kan beginnen.'; } function openingFor(value){ const t=lower(value),empathy=empathyLine(value),base=hasParentFeeling(value)?topicCopy().opening+' '+emotionLine(value):topicCopy().opening; if(/school/.test(t)&&/(goed|prima|geen probleem|geen problemen|ok[eé]|rustig)/.test(t)){ const place=/\bthuis\b/.test(t)?'thuis':'buiten school'; return `${empathy} Dat het op school goed gaat en ${place} zo anders loopt, kan extra verwarrend zijn.`; } return `${empathy} ${base}`; } function parentFeelingQuestion(){return `Wat gebeurt er bij jou op zo’n moment, en wat doe je dan meestal? Bijvoorbeeld boos, machteloos, harder praten, terugtrekken of rustig blijven.`;} function isUncertainAnswer(value){ const t=lower(cleanAiText(value)).replace(/[.!?]+$/,'').trim(); return /^(geen idee|weet ik niet|ik weet het niet|dat weet ik niet|ik weet het echt niet|ik weet het niet precies|geen flauw idee|lastig te zeggen|geen idee eigenlijk)$/i.test(t); } function uncertaintyPrompt(step){ const n=name(); const prompts={ doorvraag:`Dat is helemaal oké. We hoeven de oorzaak nog niet te weten. Wat zie je als eerste aan ${n} wanneer het moeilijk wordt?`, doorvraag_extra:`Laten we het kleiner maken. Waar was je de laatste keer en wat deed ${n} als eerste?`, gezin:`Dat hoeft niet meteen duidelijk te zijn. Wat zie je bij de andere kinderen zodra het moment begint?`, gezin_extra:'Kijk alleen naar wat zichtbaar is: loopt iemand weg, wordt er geroepen, wordt iets afgepakt of gebeurt er iets anders?', oudergevoel:'Dat kan lastig zijn om onder woorden te brengen. Wat merk je als eerste bij jezelf: spanning in je lijf, sneller praten, stilvallen of iets anders?', geprobeerd:'Geen probleem. Wat doe je meestal als eerste zodra het gebeurt, ook als dat niet bewust gekozen is?', eerste_anders:'Je hoeft het nog niet precies te weten. Welk klein verschil zou thuis als eerste wat lucht geven?' }; return prompts[step?.id]||'Dat is oké. Kun je alleen beschrijven wat je zag of hoorde op het laatste moeilijke moment?'; } function uncertaintyChoices(step){ const n=name(); const choices={ doorvraag:['Boos of luid worden','Huilen of bang worden','Weglopen of vermijden','Stilvallen of dichtklappen','Heel druk of onrustig worden'], doorvraag_extra:['Thuis','Op school of opvang','Tijdens een overgang','Na een vraag of verwachting','Bij drukte of vermoeidheid'], gezin:['Iemand loopt weg','Er wordt geroepen','Er wordt iets afgepakt','Er ontstaat fysiek contact','Ik wil het zelf beschrijven'], gezin_extra:['Weglopen','Roepen of huilen','Afpakken of duwen','Stilvallen','Iets anders'], oudergevoel:['Spanning in mijn lijf','Ik praat sneller of harder','Ik val stil','Ik wil het direct oplossen','Ik trek me terug'], geprobeerd:['Ik stel gerust','Ik leg uit','Ik neem iets over','Ik geef ruimte','Ik blijf in de buurt'], eerste_anders:[`Meer rust voor ${n}`,'Minder angst of spanning','Eerder herkennen wat er gebeurt','Meer contact','Een moment makkelijker laten verlopen'] }; return choices[step?.id]||[]; } function thinAnswer(value){ const t=lower(value).trim(); return !t || t.split(/\s+/).length<4 || /^(weet ik niet|geen idee|soms|vaak|altijd|verschilt|geen|niks|niets|dat weet ik niet|ik weet het niet precies)$/i.test(t); } function hasConcreteContext(value){ const t=lower(value); return /\b(als|wanneer|vooral|meestal|laatste keer|vlak voor|voordat|omdat|tijdens|bij|thuis|opvang|ochtend|middag|avond|bed|eten|scherm|aankleden|vertrekken|nee|grens|stoppen|overgang|moe|honger|druk|prikkel)\b/.test(t); } function shouldAskExtraDetail(){ if(!state.answers.doorvraag||state.answers.doorvraag_extra)return false; const story=[state.answers.probleem,state.answers.doorvraag].filter(Boolean).join(' '); return thinAnswer(state.answers.doorvraag)||!hasConcreteContext(story); } function wholeStory(){return [state.answers.probleem,state.answers.doorvraag,state.answers.doorvraag_extra,state.answers.achtergrond,state.answers.gezin_extra,state.answers.oudergevoel,state.answers.geprobeerd,state.answers.diagnose,state.answers.jij,state.answers.eerste_anders].filter(Boolean).join(' ');} function hasMomentAndTrigger(value){ const t=lower(value); return t.split(/\s+/).length>10&&/\b(als|wanneer|zodra|vlak voor|voordat|omdat|tijdens|bij|na|vooral|meestal)\b/.test(t)&&hasConcreteContext(t); } function shouldAskMainDetail(){ if(state.answers.doorvraag)return false; return !hasMomentAndTrigger(state.answers.probleem); } function shouldAskSiblingDetail(){ if(state.answers.gezin_extra)return false; const t=lower(wholeStory()); if(hasSiblingContextDetail())return false; return mentionsOtherChildren()&&/\b(elkaar|ruzie|bots|botsen|delen|jaloers|afpakken|uitdagen)\b/.test(t); } function shouldAskTried(){ if(state.answers.geprobeerd)return false; return Boolean(state.answers.achtergrond&&(state.answers.doorvraag||state.answers.doorvraag_extra||hasMomentAndTrigger(state.answers.probleem))); } function shouldAskBackground(){ if(state.answers.achtergrond)return false; return Boolean(state.answers.doorvraag||state.answers.doorvraag_extra||hasMomentAndTrigger(state.answers.probleem)); } function shouldAskParentFeeling(){ if(state.answers.oudergevoel)return false; const t=lower(wholeStory()); return Boolean(state.answers.geprobeerd||physicalWithSibling(t)||/niet te genieten|elke dag|hele dag|steeds|altijd|drift|slaat|strijd|nacht|slaap/.test(t)); } function shouldAskDiagnosis(){return !Object.prototype.hasOwnProperty.call(state.answers,'diagnose');} function shouldAskCapacity(){ if(state.answers.jij)return false; return state.answers.oudergevoel&&/\b(moe|uitgeput|op|machteloos|schrik|kan niet meer|weinig ruimte|overprikkel|bang)\b/.test(lower(wholeStory())); } function mentionsOtherChildren(){ const t=lower([state.answers.probleem,state.answers.doorvraag,state.answers.doorvraag_extra,state.answers.gezin_extra].filter(Boolean).join(' ')); return /\b(broer|broertje|zus|zusje|andere kinderen|kinderen thuis|jongste|oudste|tweeling|elkaar|onderling|jaloers|delen|ruzie tussen)\b/.test(t); } function hasSiblingContextDetail(){ const t=lower([state.answers.probleem,state.answers.doorvraag,state.answers.doorvraag_extra,state.answers.gezin_extra].filter(Boolean).join(' ')); return mentionsOtherChildren()&&/vooral beschermen|het begint tussen hen|allebei|slaat|schopt|duwt|bijt|krabt|pakt|afpakken|speelgoed|delen|wachten|jaloers|ruzie|bots|elkaar|bescherm/.test(t); } function extraDetailQuestion(){ const n=name(),topic=topicOf(); if(topic==='strijd')return `Kun je één concreet voorbeeld geven van de laatste keer dat ${n} boos werd?`; if(topic==='scherm')return 'Wat gebeurde er precies toen het scherm de laatste keer uit moest?'; if(topic==='bed')return `Wat gebeurde er de laatste keer vlak vóór het slapen moeilijk werd voor ${n}?`; if(topic==='ritme')return 'Wat gebeurde er vanochtend of op een recente ochtend precies op het lastigste moment?'; if(topic==='angst')return `Wat gebeurde er de laatste keer vlak vóór ${n} bang of onzeker werd?`; if(topic==='gezin')return 'Wat was het laatste moment waarop het tussen de kinderen omsloeg?'; return `Kun je één concreet voorbeeld geven van een recent moment waarop het lastig werd voor ${n}?`; } function extraDetailChips(){return ['Na een grens of nee','Bij een overgang','Als iets stopt','Bij drukte of prikkels','Ik weet het echt niet'];} function backgroundQuestion(){ const n=name(),topic=topicOf(); if(topic==='angst')return `Zijn er momenten waarop ${n} dit wél durft of waarop de spanning duidelijk minder is?`; if(topic==='bed')return `Op welke avonden gaat het slapen merkbaar makkelijker voor ${n}?`; if(topic==='scherm')return `Wanneer lukt stoppen met een scherm bij ${n} juist iets makkelijker?`; if(topic==='plannen')return `Bij welke taak lukt beginnen of doorgaan voor ${n} juist iets beter?`; if(topic==='gezin')return 'Wanneer lukt het de kinderen wél om samen te zijn zonder dat het oploopt?'; return `Zijn er momenten waarop dit bij ${n} minder speelt of waarop het juist wél lukt?`; } function backgroundChoices(){ const topic=topicOf(); if(topic==='angst')return ['Met iemand erbij','Na voorbereiding','In een vertrouwde omgeving','Als er geen tijdsdruk is','Dat weet ik nog niet']; if(topic==='bed')return ['Na een rustige dag','Met een vaste volgorde','Als iemand erbij blijft','In het weekend','Dat verschilt te veel']; if(topic==='scherm')return ['Na een duidelijke aankondiging','Aan het einde van een spel','Als iets leuks volgt','Met een vaste afspraak','Eigenlijk bijna nooit']; return ['Als er meer rust is','Als het voorspelbaar is','Met één-op-één aandacht','Als mijn kind uitgerust is','Dat weet ik nog niet']; } function firstChangeQuestion(){return 'Wat wil je het liefst als eerste anders zien?';} function firstChangeChoices(){ const n=name(),topic=topicOf(); const choices={ angst:[`${n} durft iets eerder`,`${n} vertelt eerder wat spannend is`,'Minder vermijden','Sneller herstellen na spanning','Meer vertrouwen op een lastig moment'], bed:['Rustiger naar bed','Minder lang wakker liggen','Minder strijd rond bedtijd','Zelfstandiger inslapen','Rustiger wakker worden'], scherm:['Rustiger stoppen met schermen','Minder onderhandelen','Een duidelijker stopmoment','Minder boosheid na stoppen','Sneller iets anders kunnen doen'], ritme:['Rustiger door de ochtend','Makkelijker schakelen','Minder strijd bij aankleden','Op tijd kunnen vertrekken','Meer voorspelbaarheid'], plannen:['Makkelijker beginnen','Langer bij een taak blijven','Minder strijd over huiswerk','Beter overzicht houden','Iets vaker zelf afmaken'], gezin:['Minder escalatie tussen de kinderen','Eerder kunnen ingrijpen','Minder fysiek gedrag','Sneller weer contact','Meer rustige momenten samen'], emotie:['Eerder merken dat het oploopt','Minder heftige reacties','Sneller terug naar rust','Gevoelens eerder uiten','Meer contact tijdens spanning'], puber:['Minder discussie','Rustiger afspraken bespreken','Meer contact houden','Duidelijker grenzen afspreken','Sneller herstellen na gedoe'], strijd:['Minder heftige boosheid','Eerder kunnen bijsturen','Minder strijd op dit moment','Sneller terug naar rust','Meer contact houden'], breed:['Dit moment iets rustiger laten verlopen','Eerder herkennen wat er gebeurt','Een kleine stap kunnen oefenen','Meer contact houden','Sneller terug naar rust'] }; return choices[topic]||choices.breed; } function localReflection(){ const n=name(),topic=topicOf(),moment=state.answers.doorvraag_extra||state.answers.doorvraag||state.answers.probleem||'',gevoel=cleanAiText(state.answers.oudergevoel||state.answers.jij||''); const schoolContrast=schoolPositiveOnly()&&/\bthuis\b/.test(coreText()); const siblingLine=physicalWithSibling(contextText(moment))?'Omdat er ook een ander kind geraakt kan worden, moet de eerste stap helpen om eerder zicht te krijgen op dat ene moment.':'Het belangrijkste houvast zit in wat er vlak voor dat moment gebeurt.'; const contextzin=moment?'Dat concrete voorbeeld geeft meer richting dan alleen de naam van het gedrag.':'Er is nog één concreet voorbeeld nodig om de eerste stap goed te laten passen.'; const ouderzin=gevoel?'Ook wat het bij jou oproept hoort bij de context, zonder dat jij de oorzaak wordt.':'De eerste stap blijft bij wat er bij je kind gebeurt en bij het moment zelf.'; const copy={ strijd:`Dat klinkt zwaar om steeds opnieuw mee te maken${schoolContrast?', zeker als het op school juist goed gaat en thuis zo anders loopt':''}. Bij ${n} is vooral belangrijk op welk moment boosheid, drift of niet luisteren zichtbaar wordt. ${siblingLine} ${ouderzin}`, scherm:`Schermmomenten kunnen thuis snel groot worden, juist omdat stoppen voor een kind echt een overgang is. Bij ${n} is vooral belangrijk wat er precies gebeurt voordat het scherm uit moet. ${contextzin} ${ouderzin}`, bed:`Als slapen steeds schuurt, kan de hele avond daardoor onder spanning komen te staan. Bij ${n} is vooral belangrijk welk stukje van het naar bed gaan vastloopt. ${contextzin} ${ouderzin}`, ritme:`Bij routines zit de spanning vaak in een klein stukje van de dag. Bij ${n} is vooral belangrijk welk schakelmoment het meeste moeite kost. ${contextzin} ${ouderzin}`, angst:`Als ${n} bang of onzeker wordt, wil je eerst snappen waar die spanning precies op reageert. ${contextzin} ${ouderzin} Zo blijft de eerste stap rustig en concreet.`, plannen:`Bij ${n} is vooral belangrijk waar het vastloopt in starten, ordenen, onthouden of afmaken. ${contextzin} ${ouderzin} Dat maakt de eerste stap praktischer dan opnieuw uitleggen.`, emotie:`Bij ${n} lijkt het belangrijk om het eerste seintje van oplopende emotie beter te leren herkennen. ${contextzin} ${ouderzin} Dan hoeft de eerste stap niet groot te zijn.`, puber:`Bij ${n} kijken we eerst waar het gesprek kantelt: de afspraak, de toon, het moment of de behoefte aan ruimte. ${contextzin} ${ouderzin}`, gezin:`Omdat broer, zus of andere kinderen in dit moment meespelen, kijken we precies naar wat er feitelijk gebeurt wanneer het omslaat. ${contextzin} ${ouderzin}`, breed:`Dank je dat je dit zo open hebt ingevuld. Bij ${n} houden we de eerste stap dicht bij wat jij echt beschrijft. ${contextzin} ${ouderzin}` }; return copy[topic]||copy.breed; } function localFactualSummary(){ const a=state.answers,parts=[]; const child=cleanAiText(a.kind||''); const usableChild=child&&!/^(je kind|fijn|goed|prima|ok[eé]?)$/i.test(child)?child:'je kind'; const age=cleanAiText(a.leeftijd||''); const problem=cleanAiText(a.probleem||''); const moment=cleanAiText(a.doorvraag_extra||a.doorvraag||''); if(problem)parts.push(`Je vertelde over ${usableChild}${age?` van ${age}`:''}: ${problem}`); else parts.push(`Je vertelde wat er op dit moment speelt bij ${usableChild}${age?` van ${age}`:''}`); if(moment&&lower(moment)!==lower(problem))parts.push(`Als concreet moment noemde je: ${moment}`); if(a.frequentie)parts.push(`Dit komt voor: ${cleanAiText(a.frequentie)}`); if(a.achtergrond)parts.push(`Je ziet dat het soms anders gaat: ${cleanAiText(a.achtergrond)}`); if(a.geprobeerd)parts.push(`Je hebt al geprobeerd: ${cleanAiText(a.geprobeerd)}`); if(a.oudergevoel)parts.push(`Over wat dit met jou doet vertelde je: ${cleanAiText(a.oudergevoel)}`); if(a.diagnose&&!/^(nee|liever niet)/i.test(cleanAiText(a.diagnose)))parts.push(`Over diagnose of onderzoek gaf je aan: ${cleanAiText(a.diagnose)}`); return parts.map(part=>part.replace(/[. ]*$/,'.')).join(' '); } function whenQuestion(){return 'Wanneer merk je dit het meest?';} function whenChoices(){ const topic=topicOf(); if(topic==='scherm')return ['Als het scherm uit moet','Bij een waarschuwing vooraf','Als iets anders moet beginnen','Na een drukke dag','Dat verschilt']; if(topic==='bed')return ['Bij het naar bed gaan','Bij het inslapen','In de nacht','Bij het wakker worden','Dat verschilt']; if(topic==='angst')return ['Bij iets nieuws','Bij afscheid of alleen zijn','Op school of opvang','Voorafgaand aan een afspraak','Dat verschilt']; if(topic==='plannen')return ['Bij beginnen aan een taak','Bij huiswerk of leren','Bij meerdere stappen achter elkaar','Als de tijd dringt','Dat verschilt']; if(topic==='gezin')return ['Tijdens samen spelen','Bij delen of wachten','Als één kind aandacht krijgt','Na school of opvang','Dat verschilt']; if(topic==='ritme')return ['In de ochtend','Bij thuiskomen','Rond eten of aankleden','Bij een overgang','Dat verschilt']; if(topic==='puber')return ['Bij afspraken en grenzen','Bij schoolwerk','Rond telefoon of schermen','Als we iets willen bespreken','Dat verschilt']; return ['Bij een grens of nee','Als iets niet lukt','Bij een overgang','Na een drukke dag','Dat verschilt']; } function frequencyChoices(){return ['Meerdere keren per dag','Bijna elke dag','Een paar keer per week','Af en toe','Dat wisselt sterk'];} function whereChoices(){return ['Vooral thuis','Vooral op school of opvang','Zowel thuis als op school','Onderweg of buitenshuis','Dat verschilt per situatie'];} function triedQuestion(){return 'Wat heb je al gedaan?';} function triedChoices(){return ['Zelf tips opgezocht','Met school of opvang gesproken','Naar de huisarts geweest','Een psycholoog gezocht','Contact met wijkteam of jeugdhulp','Een online programma gevolgd','Nog niets specifieks'];} function acknowledge(step,text){ const t=lower(text); if(step.id==='kind')return /liever (?:niet|geen naam)/.test(t)?'Helemaal goed. Dan gebruik ik gewoon “je kind”.':'Dank je. Dan kan het gesprek net iets dichter bij jouw situatie blijven.'; if(step.id==='leeftijd'){const age=normalizeAgeAnswer(text)||state.answers.leeftijd;return age?`Dank je, ${age}. Dat helpt om de eerste stap eerlijk te houden voor wat je kind op deze leeftijd al kan dragen.`:'Dank je.';} if(step.id==='gezin'||step.id==='gezin_extra'){ if(/vooral beschermen|allebei|slaat|schopt|bijt|duwt|raakt/i.test(t))return 'Dat is heftig om te moeten begeleiden. Dan is vooral belangrijk wat er vlak vóór dat moment gebeurt.'; return /^(nee|alleen achtergrond)/i.test(t)?'Helder, dan houden we de aandacht bij je kind en het concrete moment.':'Helder. Dan blijft de aandacht bij wat er feitelijk gebeurt op dat moment.'; } if(step.id==='doorvraag')return `Helder. Je merkt het vooral ${cleanAiText(text).toLowerCase()}.`; if(step.id==='frequentie')return `Dank je. Zo weten we hoe vaak dit in jullie dagelijks leven terugkomt.`; if(step.id==='doorvraag_extra')return `Dank je dat je dit moment zo concreet beschrijft. Juist zo’n echt voorbeeld laat beter zien wat jij en je kind meemaken.`; if(step.id==='achtergrond')return `Helder. Zo weten we in welke omgeving dit vooral speelt.`; if(step.id==='oudergevoel')return emotionLine(text); if(step.id==='geprobeerd')return /nog niets/i.test(t)?'Dat is helemaal goed. Je hoeft niet eerst van alles geprobeerd te hebben om hulp te mogen vragen.':'Dank je. We nemen mee welke hulp en informatie je al hebt gezocht.'; if(step.id==='diagnose'||step.id==='hulp')return ''; if(step.id==='jij')return /\bmoe\b|\bop\b|schrik/.test(t)?'Dank je dat je dit zo eerlijk zegt. Je hoeft hier niet te doen alsof je nog alle ruimte hebt; de eerste stap moet ook voor jou te dragen zijn.':'Fijn dat je zo duidelijk aangeeft hoeveel ruimte je hebt. Daar mag de eerste stap echt bij aansluiten.'; if(step.id==='eerste_anders')return 'Helder. Dat wordt het eerste focuspunt. We pakken niet alles tegelijk aan, omdat dat thuis vaak juist meer druk geeft. Eén kleine stap maakt duidelijk waar je op oefent, waardoor je sneller merkt wat werkt en daarna rustiger verder kunt bouwen.'; return ''; } function stepBank(){return { leeftijd:{id:'leeftijd',q:'Hoe oud is je kind?',c:['0–4 jaar','5–7 jaar','8–12 jaar','13–18 jaar'],ai:false}, doorvraag:{id:'doorvraag',q:whenQuestion(),c:whenChoices()}, frequentie:{id:'frequentie',q:'Hoe vaak komt dit voor?',c:frequencyChoices()}, achtergrond:{id:'achtergrond',q:'Waar merk je dit vooral?',c:whereChoices()}, geprobeerd:{id:'geprobeerd',q:triedQuestion(),c:triedChoices()}, diagnose:{id:'diagnose',q:'Is er bij je kind een diagnose, een vermoeden of loopt er onderzoek?',c:['Nee','Er is een diagnose','Er is een vermoeden','Er loopt onderzoek','Liever niet zeggen'],ai:false}, };} function steps(){ const s=stepBank(),out=[]; if(!state.answers.leeftijd)out.push(s.leeftijd); if(!state.answers.doorvraag)out.push(s.doorvraag); if(!state.answers.frequentie)out.push(s.frequentie); if(!state.answers.achtergrond)out.push(s.achtergrond); if(!state.answers.geprobeerd)out.push(s.geprobeerd); if(shouldAskDiagnosis())out.push(s.diagnose); return out; } function editableSteps(){ const s=stepBank(); return [s.leeftijd,s.doorvraag,s.frequentie,s.achtergrond,s.geprobeerd,s.diagnose]; } function splitStoredAnswer(value,choices){ const text=cleanAiText(value||''); const choice=(choices||[]).find(item=>text===item||text.startsWith(item+' — '))||''; return {choice,note:choice?text.slice(choice.length).replace(/^\s*—\s*/,''):text}; } function renderStep(step,q=step.q,c=step.c,{fromHistory=false}={}){ testFlow.classList.remove('rio-is-summary'); activeQuestionText=cleanAiText(q||step.q); activeChoices=Array.isArray(c)?c:[]; const stored=splitStoredAnswer(state.answers[step.id],activeChoices); selectedChoice=stored.choice; testQuestion.classList.remove('rio-test-loading'); testQuestion.textContent=activeQuestionText; testChoices.replaceChildren(); activeChoices.forEach(label=>{ const button=document.createElement('button'); button.type='button';button.className='rio-test-choice';button.textContent=label; button.classList.toggle('is-selected',label===selectedChoice); button.setAttribute('aria-pressed',String(label===selectedChoice)); button.onclick=()=>{ selectedChoice=selectedChoice===label?'':label; testChoices.querySelectorAll('.rio-test-choice').forEach(node=>{const active=node.textContent===selectedChoice;node.classList.toggle('is-selected',active);node.setAttribute('aria-pressed',String(active));}); testNext.disabled=!(selectedChoice||cleanAiText(testNote.value)); testError.textContent=''; }; testChoices.appendChild(button); }); testNote.value=stored.note; testError.textContent=''; testNext.disabled=!(selectedChoice||cleanAiText(testNote.value)); testNext.textContent='Volgende'; testContext.classList.remove('rio-context-thinking'); testFlow.classList.remove('rio-is-thinking','rio-step-enter'); void testFlow.offsetWidth; testFlow.classList.add('rio-step-enter'); setTimeout(()=>testFlow.classList.remove('rio-step-enter'),650); if(fromHistory){ const historyRecord=intakeRecords[intakePosition]; if(historyRecord?.context)testContext.textContent=historyRecord.context; } if(!fromHistory){ const existing=intakeRecords[intakePosition]; if(!existing||existing.id!==step.id){intakeRecords=intakeRecords.slice(0,intakePosition+1);intakeRecords.push({id:step.id,q:activeQuestionText,c:[...activeChoices],context:testContext.textContent});intakePosition=intakeRecords.length-1;} } testBack.hidden=intakePosition<=0; updateProgress(step); testFlow.scrollTop=0; requestAnimationFrame(()=>{ const shell=assistent.getBoundingClientRect(); if(shell.top<8||shell.top>Math.min(120,window.innerHeight*.18))assistent.scrollIntoView({behavior:matchMedia('(prefers-reduced-motion: reduce)').matches?'auto':'smooth',block:'start'}); testQuestion.focus?.({preventScroll:true}); }); } function updateProgress(step){ if(!voortgang)return; if(!step){voortgang.hidden=true;voortgang.textContent='';return;} const current=Math.max(1,intakePosition+1); testProgressCount.textContent=`Vraag ${current} van 6`; testProgressBar.style.width=`${Math.max(16.7,Math.min(100,Math.round(current/6*100)))}%`; } function ask(){ phase='intake';composer.hidden=true;input.placeholder='Schrijf je antwoord…'; const step=steps()[0];currentStep=step||null; updateProgress(step); if(!step){reflect();return;} trackAnalytics('chat_step_viewed',{step_id:step.id,metadata:{question:cleanAiText(step.q),device:analyticsDevice()}}); lastAnsweredStep=null; renderStep(step); } function beginIntake(){testContext.textContent=openingFor(state.answers.probleem);ask();} function start(text){if(busy)return;if(looksLikeSpam(text)){spamReply(null,true);return;}if(greetingOnly(text)){greetingReply();return;}if(looksLikeNonsense(text)){nonsenseReply(null,true);return;}reset(false);analyticsTextConsent=Boolean($('rioMeetToestemming')?.checked);analyticsResearchToken='';analyticsStepNumber=0;analyticsMilestones.page.clear();analyticsMilestones.route.clear();newAnalyticsSession();trackAnalytics('session_started',{metadata:{text_consent:analyticsTextConsent,consent_version:'gesprek-verbeteren-v2'}});if(selectedStartTopic)trackAnalytics('topic_selected',{step_id:'start',metadata:{topic:selectedStartTopic,selected_text:text,device:analyticsDevice()}});$('rio-chat').classList.add('rio-intake-active');assistent.classList.add('rio-actief');state.answers.probleem=text;captureKnownContext(text);message(text,'gebruiker');const risk=detectSafety(text);if(risk){safety(risk,()=>beginIntake());return;}beginIntake();} function answer(text){ if(busy||phase!=='intake')return; const step=currentStep||steps()[0];if(!step)return; const value=cleanAiText(text); if(!value){testError.textContent='Kies een antwoord of schrijf kort wat er bij jou speelt.';testNote.focus();return;} if(looksLikeSpam(value)){testError.textContent='Dit antwoord lijkt niet bij de vraag te horen. Wil je het nog eens proberen?';return;} if(looksLikeNonsense(value,step)){testError.textContent='Ik kan dit nog niet goed plaatsen. Kies een optie of beschrijf één concreet moment.';return;} const normalizedAge=step.id==='leeftijd'?normalizeAgeAnswer(value):''; if(step.id==='leeftijd'&&!ageRange(normalizedAge)){testError.textContent='Kies een leeftijd of vul bijvoorbeeld “6 jaar” in.';return;} const previousValue=state.answers[step.id]||''; state.answers[step.id]=step.id==='leeftijd'?normalizedAge:value; if(step.id==='leeftijd')state.answers.leeftijd=normalizedAge; trackAnalytics('message_user',{actor:'user',step_id:step.id,text:value,metadata:{answer_length:value.length,used_choice:Boolean(selectedChoice),used_note:Boolean(testNote.value.trim()),selected_option:selectedChoice||''}}); trackAnalytics('question_answered',{actor:'user',step_id:step.id,metadata:{used_choice:Boolean(selectedChoice),used_note:Boolean(testNote.value.trim()),answer_length:value.length,selected_option:selectedChoice||''}}); lastAnsweredStep={id:step.id,answer:value,acknowledged:false}; const personalResponse=cleanAiText(acknowledge(step,state.answers[step.id])); const record=intakeRecords[intakePosition]; if(record){record.value=state.answers[step.id];record.q=activeQuestionText;record.c=[...activeChoices];} const changed=Boolean(previousValue&&previousValue!==state.answers[step.id]); if(changed&&intakePositiondelete state.answers[item.id]); intakeRecords=intakeRecords.slice(0,intakePosition+1); } trackAnalytics('question_continued',{step_id:step.id,metadata:{changed,device:analyticsDevice()}}); if(!changed&&intakePosition{ testContext.textContent=personalResponse||'Dank je. Ik neem dit mee in de volgende vraag.'; currentStep=null; ask(); }; const risk=detectSafety(value); if(risk){safety(risk,proceed);return;} proceed(); } function safety(level,resume){phase='safety';state.safety=level;composer.hidden=true;const immediate=level==='acuut'; if(level==='zorgen'){ message('Dat kan heftig voelen om te typen. Is er op dit moment direct gevaar dat iemand gewond raakt?'); buttons([ ['Nee, geen direct gevaar',()=>{state.safety=null;message('Dank je. Dan gaan we rustig verder. Als het later toch onveilig voelt, vraag dan iemand dichtbij of een professional om mee te kijken.');resume();}], ['Ja, of ik twijfel',()=>safety('acuut',resume)] ]); return; } message(immediate?'Bij direct gevaar: bel 112. Wacht dan niet op deze intake.':'Dit klinkt alsof er direct iemand mee moet kijken.'); const bubble=message(level==='zelf'?'Je kunt in Nederland contact opnemen met 113 Zelfmoordpreventie: bel 113 of gratis 0800-0113.':'Bij zorgen over veiligheid thuis kun je Veilig Thuis bellen: 0800-2000. Bij direct gevaar bel je 112.'); const link=document.createElement('a');link.href=level==='zelf'?'https://www.113.nl/':'https://www.veiligthuis.nl/';link.textContent=level==='zelf'?' Naar 113':' Naar Veilig Thuis';link.target='_blank';link.rel='noopener';bubble.appendChild(link); message('Deze intake is geen hulpdienst. Ga pas verder als het veilig genoeg is.'); buttons([]);} function confirmReflection(text){ const value=cleanAiText(text);if(!value)return; if(looksLikeNonsense(value)){input.value='';message('Ik kan hier nog niet goed mee verder. Typ “ja klopt” als dit klopt, of kies hieronder voor aanpassen.');buttons([['Ja, dit klopt — maak mijn route',showRoute],['Nee, antwoorden aanpassen',edit]]);return;} message(value,'gebruiker');input.value=''; if(/^(ja|jep|yes|klopt|dit klopt|helemaal|ok[eé]?|toon|route)/i.test(value)){pendingReflectionCorrection=false;showRoute();return;} if(/^(aanpassen|wijzigen|corrigeren|antwoorden aanpassen)$/i.test(value)){pendingReflectionCorrection=false;message('Helemaal goed. Kies wat je wilt aanpassen.');edit();return;} if(pendingReflectionCorrection&&applyReflectionCorrection(value)){pendingReflectionCorrection=false;message('Dank je, ik pas dit aan en check het opnieuw.');reflect();return;} if(/^(nee|nee klopt niet|klopt niet|niet helemaal|nee, niet helemaal|dat klopt niet)$/i.test(value)){pendingReflectionCorrection=true;message('Wat klopt er niet? Typ het in één zin, dan pas ik het aan.');buttons([['Antwoorden aanpassen',edit]]);return;} if(/(nee|niet|klopt niet|aanpassen|wijzigen|corrigeren|anders)/i.test(value)&&applyReflectionCorrection(value)){pendingReflectionCorrection=false;message('Dank je, ik pas dit aan en check het opnieuw.');reflect();return;} message('Dank je. Als dit zo klopt, typ “ja klopt” of kies de knop hieronder. Als het niet klopt, kun je je antwoorden aanpassen.'); buttons([['Ja, dit klopt — maak mijn route',showRoute],['Nee, antwoorden aanpassen',edit]]); } function reflect(){ pendingReflectionCorrection=false; phase='reflectie'; composer.hidden=true; updateProgress(null); testFlow.classList.remove('rio-is-summary'); trackAnalytics('route_generation_started',{step_id:'route',metadata:{device:analyticsDevice()}}); showRoute({route:sanitize(localRoute()),instant:true}); } function edit(){closeRouteModal();$('rio-chat').classList.remove('rio-toont-route');phase='edit';composer.hidden=true;currentStep=null;const all=[{id:'probleem',q:'Waar loopt het vast?'},...editableSteps().filter(x=>!x.optional||state.answers[x.id]||shouldAskExtraDetail())];buttons(all.map(x=>[x.id==='probleem'?'Wat er speelt':x.q,()=>{phase='edit_value';composer.hidden=false;input.value=state.answers[x.id]||'';editId=x.id;message(x.q);} ]));} let editId=null; function editValue(text){if(!text.trim())return;const editStep=editableSteps().find(step=>step.id===editId)||{id:editId,c:[]};if(looksLikeNonsense(text,editStep)){nonsenseReply(editStep);return;}const normalizedAge=editId==='leeftijd'?normalizeAgeAnswer(text):'';if(editId==='leeftijd'&&!ageRange(normalizedAge)){message('Vul een geldige leeftijd van 0 tot en met 18 jaar in.');return;}customQuestion='';customChoices=null;state.answers[editId]=editId==='kind'?normalizeKindAnswer(text):editId==='leeftijd'?normalizedAge:text;captureKnownContext(text);if(editId==='probleem'||editId==='doorvraag'){delete state.answers.doorvraag_extra;}message(text,'gebruiker');input.value='';const risk=connection?null:detectSafety(text);if(risk){safety(risk,reflect);return;} if(editId==='gezin'&&/(^ja|spelen mee|vooral|bots|ruzie|elkaar)/i.test(String(text))&&!state.answers.gezin_extra){editId='gezin_extra';message('Wat gebeurt er dan tussen hen vlak voordat het omslaat?');return;}reflect();} function closeRouteModal(){ const pop=$('rioRoutepop');if(pop)pop.hidden=true; if(routeStepHandler){window.removeEventListener('popstate',routeStepHandler);routeStepHandler=null;} $('rio-chat').classList.remove('rio-route-open','rio-toont-route'); } function routeModal(){ let pop=$('rioRoutepop'); if(!pop){ pop=document.createElement('div'); pop.id='rioRoutepop'; pop.className='rio-routepop'; pop.hidden=true; pop.setAttribute('role','dialog'); pop.setAttribute('aria-modal','true'); pop.setAttribute('aria-label','Jouw persoonlijke route'); $('rio-chat').appendChild(pop); } if(!pop.dataset.rioAnalyticsScroll){ pop.addEventListener('scroll',()=>queueAnalyticsScroll(pop),{passive:true}); pop.dataset.rioAnalyticsScroll='true'; } pop.replaceChildren(); const shell=document.createElement('div'); shell.className='rio-routepop-shell'; pop.appendChild(shell); pop.hidden=false; $('rio-chat').classList.add('rio-route-open'); return shell; } function showRoute(data){ if(!connection&&!data&&!route){ if(/^(127\.0\.0\.1|localhost)$/.test(location.hostname)){showRoute({route:sanitize(localRoute()),fallback:true});return;} composer.hidden=true; trackAnalytics('error',{step_id:'route',metadata:{code:'GEEN_VERBINDING',action:'route'}}); errorBubble=message('Het lukt op dit moment niet om je persoonlijke route te laden. Je antwoorden zijn niet weg. Probeer het later opnieuw.','bot',false); buttons([['Route opnieuw proberen',showRoute]]); return; } if(connection&&!data&&!route){remote('route',showRoute,()=>showRoute());return;} phase='route'; $('rio-chat').classList.remove('rio-intake-active'); composer.hidden=true; const loadedRoute=data?.route?sanitize(data.route):route; if(!loadedRoute){ phase='reflectie'; trackAnalytics('error',{step_id:'route',metadata:{code:'LEGE_ROUTE',action:'route'}}); errorBubble=message('Het lukt op dit moment niet om je persoonlijke route te laden. Je antwoorden zijn niet weg. Probeer het opnieuw.','bot',false); buttons([['Route opnieuw proberen',showRoute]]); return; } route=loadedRoute; try{sessionStorage.setItem(SAVED_ROUTE_KEY,JSON.stringify({saved_at:Date.now(),answers:state.answers,route}));}catch{} trackAnalytics('route_created',{step_id:'route',metadata:{plan_key:route.plan_key||'',first:route.nu?.id||'',next:(route.daarna||[]).map(item=>item.id)}}); trackAnalytics('route_viewed',{step_id:'route'}); document.querySelectorAll('#rio-chat .rio-resultaat').forEach(el=>el.remove()); const mount=routeModal(); const pop=$('rioRoutepop'); const box=document.createElement('div'); box.className='rio-resultaat rio-routepage rio-routepage-v2'; const add=(parent,tag,text,cls)=>{const el=document.createElement(tag);if(text!==undefined&&text!==null)el.textContent=text;if(cls)el.className=cls;parent.appendChild(el);return el;}; const CTA_LABEL='Bekijk de toegang tot de OpvoedApp'; const branchIcon=''; const recoveryIcon=''; const RIO_LOGO_ICON='https://www.rustinouderschap.nl/wp-content/uploads/2026/09/beeldmerk-1.png'; const reviews=[ {name:'Rianne Waelkens',meta:'1 review · 0 foto’s',date:'5 dagen geleden',initial:'R',text:'Heel blij met ‘rust in ouderschap’. Door de combinatie van theorie in kleine blokjes, het steeds weer aanmoedigen tot het nemen kleine haalbare stapjes en de mogelijkheid tot vragen stellen is het echt haalbaar om in de praktijk positieve veranderingen te krijgen. Waarbij je niet wat snelle tips krijgt, maar naar de basis van gedrag en behoeftes erachter kijkt. En er is bij de coaches een basis van acceptatie van wat er op dat moment is, en van daaruit samen kijken naar hoe het anders kan en welke stapjes je daarin kan zetten. Zit mooi en helpend in elkaar.'}, {name:'Renée de Bruijn',meta:'4 reviews · 0 foto’s',date:'1 week geleden',initial:'R',text:'Een uitgebreid aanbod aan goed onderbouwde cursussen, workshops en andere materialen om mee aan de slag te gaan in je dagelijkse uitdagingen in het ouderschap. Ook als die complex zijn. Er is alle ruimte om vragen te stellen over je persoonlijke situatie, waarop snel wordt gereageerd. Meelezen met vragen van andere ouders geeft ook fijne inzichten. Heel eerlijk: veel van de stof en tips zijn eigenlijk voor mij persoonlijk vooralsnog niet nieuw. Maar het biedt net even structuur in je aanpak van een gewoonte die niet werkt, een herinnering aan hoe het anders kan, en een steuntje in de rug als het niet lekker loopt en je het zelf niet meer ziet. Ik draai nog maar kort mee, maar het lukt me weer om met meer mildheid naar mijn jonge kind te kijken.'} ]; const expertTeam=[ ['Rosalie','Psycholoog & gedragswetenschapper','https://www.rustinouderschap.nl/wp-content/uploads/2026/06/rosalie-1.webp'], ['Celia','Ambulant hulpverlener & gezinsbegeleider','https://www.rustinouderschap.nl/wp-content/uploads/2026/06/celia-1.webp'], ['Corine','Ambulant hulpverlener','https://www.rustinouderschap.nl/wp-content/uploads/2026/06/corine-1.webp'], ['Trisha','Specialistische jeugd-GGZ','https://www.rustinouderschap.nl/wp-content/uploads/2026/06/trisha-1.webp'], ['Sifra','Specialistische GGZ','https://www.rustinouderschap.nl/wp-content/uploads/2026/07/Sifra.jpg.webp'] ]; const isLocalPreview=/^(127\.0\.0\.1|localhost)$/.test(location.hostname); const RIO_WORKSHOP_MOCKUP=window.RIO_WORKSHOP_MOCKUP||'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/mockup-workshops-opvoedapp.png'; const RIO_WORKSHOP_MOCKUPS={ boos:window.RIO_WORKSHOP_MOCKUP_BOOS||(isLocalPreview?'/assets/rio-route/workshop-sterk-voelen.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/workshop-sterk-voelen.jpg'), gezin:window.RIO_WORKSHOP_MOCKUP_GEZIN||(isLocalPreview?'/assets/rio-route/workshop-broers-zussen-v2.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/workshop-broers-zussen-v2.jpg'), angst:window.RIO_WORKSHOP_MOCKUP_ANGST||(isLocalPreview?'/assets/rio-route/course-angst-de-baas.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/course-angst-de-baas.jpg'), scherm:window.RIO_WORKSHOP_MOCKUP_SCHERM||(isLocalPreview?'/assets/rio-route/workshop-schermtijd.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/workshop-schermtijd.jpg'), slapen:window.RIO_WORKSHOP_MOCKUP_SLAPEN||(isLocalPreview?'/assets/rio-route/workshop-slapen.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/workshop-slapen.jpg'), plannen:window.RIO_WORKSHOP_MOCKUP_PLANNEN||(isLocalPreview?'/assets/rio-route/workshop-executieve-functies.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/workshop-executieve-functies.jpg'), school:window.RIO_WORKSHOP_MOCKUP_SCHOOL||(isLocalPreview?'/assets/rio-route/workshop-school-vastlopen.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/workshop-school-vastlopen.jpg'), ouder:window.RIO_WORKSHOP_MOCKUP_OUDER||(isLocalPreview?'/assets/rio-route/workshop-kalm-triggers.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/workshop-kalm-triggers.jpg'), puber:window.RIO_WORKSHOP_MOCKUP_PUBER||(isLocalPreview?'/assets/rio-route/cursus-pittige-pubers.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/cursus-pittige-pubers.jpg'), luisteren:window.RIO_WORKSHOP_MOCKUP_LUISTEREN||(isLocalPreview?'/assets/rio-route/workshop-grenzen-kalm.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/workshop-grenzen-kalm.jpg'), breed:window.RIO_WORKSHOP_MOCKUP_BREED||RIO_WORKSHOP_MOCKUP }; const valueStack=[ ['Complete opvoedcursussen','Een complete cursus voor elk thema: boosheid, rust en structuur, executieve functies, angst, weerbaarheidstraining en pubers.','https://www.rustinouderschap.nl/wp-content/uploads/2026/08/cursussen-home.jpg'], ['30+ workshops','Van 50 tot 120 minuten, één onderwerp tegelijk.',RIO_WORKSHOP_MOCKUP], ['De ADHD-bibliotheek','60+ lessen in 10 thema’s, van diagnostiek tot zelfzorg.','https://www.rustinouderschap.nl/wp-content/uploads/2026/08/ADHD-home.jpg'], ['100+ meditaties','Voor jou, en voor je kind of tiener.','https://www.rustinouderschap.nl/wp-content/uploads/2026/08/Meditaties-home.jpg'], ['Coaching calls en live sessies','Met opnames om terug te kijken.','https://www.rustinouderschap.nl/wp-content/uploads/2026/08/Persoonlijk-plan-home.jpg'], ['Scripts en werkbladen','Voorbeeldzinnen en routines om te printen.','https://www.rustinouderschap.nl/wp-content/uploads/2026/08/downloads-home.jpg'] ]; const RIO_ROUTE_MOCKUP=window.RIO_ROUTE_MOCKUP||'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/mockup-persoonlijke-route.webp'; const RIO_SUPPORT_MOCKUP='https://www.rustinouderschap.nl/wp-content/uploads/2026/09/mockup-expertchat.webp'; const RIO_MEDITATION_MOCKUP='https://www.rustinouderschap.nl/wp-content/uploads/2026/09/mockup-meditaties.webp'; const RIO_COMMUNITY_MOCKUP='https://www.rustinouderschap.nl/wp-content/uploads/2026/09/mockup-community.webp'; const RIO_APP_OVERVIEW_MOCKUP=window.RIO_APP_OVERVIEW_MOCKUP||'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/opvoedapp-app-overzicht.webp'; const RIO_APP_NEW_FEATURES_MOCKUP=window.RIO_APP_NEW_FEATURES_MOCKUP||'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/app-nieuwe-functies-overzicht.jpg'; const RIO_APP_FEATURES_DETAIL_MOCKUP=window.RIO_APP_FEATURES_DETAIL_MOCKUP||'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/Mockup-met-doelencoach-1.jpg'; const RIO_APP_TWO_PHONES_MOCKUP=window.RIO_APP_TWO_PHONES_MOCKUP||'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/app-twee-telefoons.jpg'; const RIO_PRO_FIRSTROW_MOCKUP=window.RIO_PRO_FIRSTROW_MOCKUP||'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/opvoedapp-professionals-eerste-rij-transparant.png'; const RIO_APPSTORE_BADGE=window.RIO_APPSTORE_BADGE||'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/app-store-badge.nl_.png'; const RIO_GOOGLEPLAY_BADGE=window.RIO_GOOGLEPLAY_BADGE||'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/google-play-badge.nl_.png'; const RIO_IMAGES={ hero:RIO_ROUTE_MOCKUP, start:'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/Ontwerp-zonder-titel-16.jpg', course:'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/Agent-Image-A-six-year-old-boy-stands-in-a-bright-living-room-with-his-arms-crossed-tightly_-turni.jpg.jpeg', workshop:RIO_WORKSHOP_MOCKUP, expert:RIO_SUPPORT_MOCKUP, community:RIO_COMMUNITY_MOCKUP, meditation:RIO_MEDITATION_MOCKUP, adhd:'https://www.rustinouderschap.nl/wp-content/uploads/2026/08/ADHD-home.jpg', emotions:'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/Agent-Image-A-nine-year-old-boy-stomps-his-feet-hard-on-a-tiled-kitchen-floor_-face-scrunched-in-a.jpg.jpeg', moment:'https://www.rustinouderschap.nl/wp-content/uploads/2026/06/persoonlijk-plan-family-cta.jpg', downloads:'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/Grenzengids-en-voorbeeldzinnen.jpg', audio:'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/opvoedapp-audio-card-1.jpg', expertDetail:'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/Expertchat.jpg', adhdDetail:'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/ADHD-bieb.jpg', proof:'https://www.rustinouderschap.nl/wp-content/uploads/2024/10/over-ons-2.jpg', app:'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/Mockup-opvoedapp1.jpg' }; let selectedCheckoutUrl=CHECKOUT_URL_MONTH; function syncCheckoutLinks(){ document.querySelectorAll('#rio-chat [data-rio-checkout-link="true"]:not([data-rio-fixed-checkout="true"])').forEach(link=>{link.href=selectedCheckoutUrl||CHECKOUT_URL;}); } const RIO_STRESS_IMAGE=window.RIO_STRESS_IMAGE||RIO_IMAGES.moment; const RIO_TOLERANCE_IMAGE=window.RIO_TOLERANCE_IMAGE||(isLocalPreview?'/assets/rio-route/spanningsboog-rust-naar-herstel.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/spanningsboog-rust-naar-herstel.png'); const RIO_TOPIC_IMAGES={ boos:RIO_TOLERANCE_IMAGE, angst:RIO_TOLERANCE_IMAGE, gezin:RIO_TOLERANCE_IMAGE, ouder:RIO_TOLERANCE_IMAGE, luisteren:window.RIO_TOPIC_IMAGE_LUISTEREN||(isLocalPreview?'/assets/rio-route/uitleg-luisteren-grenzen-transparant.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/uitleg-luisteren-grenzen-transparant.png'), plannen:window.RIO_TOPIC_IMAGE_PLANNEN||(isLocalPreview?'/assets/rio-route/uitleg-executieve-functies-transparant.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/uitleg-executieve-functies-transparant.png'), school:window.RIO_TOPIC_IMAGE_SCHOOL||(isLocalPreview?'/assets/rio-route/uitleg-school-leren-transparant.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/uitleg-school-leren-transparant.png'), slapen:window.RIO_TOPIC_IMAGE_SLAPEN||(isLocalPreview?'/assets/rio-route/uitleg-slapen-transparant.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/uitleg-slapen-transparant.png'), scherm:window.RIO_TOPIC_IMAGE_SCHERM||(isLocalPreview?'/assets/rio-route/uitleg-schermtijd-transparant.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/uitleg-schermtijd-transparant.png'), puber:window.RIO_TOPIC_IMAGE_PUBER||(isLocalPreview?'/assets/rio-route/uitleg-pittige-pubers-transparant.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/10/uitleg-pittige-pubers-transparant.png') }; const RIO_CYCLE_IMAGE=window.RIO_CYCLE_IMAGE||(isLocalPreview?'/assets/rio-route/cirkel-overprikkeling-opvoedapp.png':'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/cirkel-overprikkeling-opvoedapp.png'); const IMAGE_BY_ID={ '7daagse':'start', startmodule:'app', 'cursus-minder-boos':'course', 'cursus-rust-in-huis':'course', 'cursus-executieve-functies':'course', 'cursus-angst-de-baas':'moment', 'cursus-weerbaarheid':'course', 'cursus-pittige-pubers':'course', 'ws-sterk-voelen':'emotions', 'ws-emmertje':'workshop', 'ws-broer-zus':'moment', 'ws-grenzen':'workshop', 'ws-kalm-blijven':'emotions', 'ws-prikkels-buiten':'workshop', 'ws-zelfzorg':'moment', 'ws-communicatie':'workshop', 'ws-meer-invloed':'workshop', 'ws-schermtijd':'workshop', 'ws-slapen':'moment', 'ws-hechtingsstijl':'course', 'ws-hsp-eigenwil':'moment', 'ws-dagelijkse-struggles':'workshop', 'ws-eten':'moment', 'ws-opstandig':'emotions', 'ws-huiswerk-motivatie':'moment', 'ws-school-vastloopt':'workshop', 'ws-executieve-functies':'workshop', 'ws-puber-executieve-functies':'moment', 'ws-meeloopgedrag':'course', 'ws-zelfvertrouwen':'course', 'ws-hoogbegaafdheid-diagnoses':'adhdDetail', expertchat:'expert', community:'community', meditaties:'meditation' }; const PRODUCT_IMAGE_BY_ID={ '7daagse':'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/Ontwerp-zonder-titel-16.jpg', startmodule:RIO_ROUTE_MOCKUP, 'cursus-minder-boos':'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/Agent-Image-A-six-year-old-boy-stands-in-a-bright-living-room-with-his-arms-crossed-tightly_-turni.jpg.jpeg', 'cursus-rust-in-huis':'https://www.rustinouderschap.nl/wp-content/uploads/2023/02/gebruikt-2-3.jpg', 'cursus-executieve-functies':'https://www.rustinouderschap.nl/wp-content/uploads/2026/08/agent_generate_image-Candid-realistic-photograph-of-a-single-10-year-old-boy-sitt.jpg', 'cursus-angst-de-baas':'https://www.rustinouderschap.nl/wp-content/uploads/2021/12/Angstig-kind.jpg', 'cursus-weerbaarheid':'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/Gevoeligheid.jpg', 'cursus-pittige-pubers':'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/puberteit-seksuele-lichamelijke-ontwikkeling-hero-v2.jpg', 'ws-sterk-voelen':'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/Agent-Image-A-nine-year-old-boy-stomps-his-feet-hard-on-a-tiled-kitchen-floor_-face-scrunched-in-a.jpg.jpeg', 'ws-emmertje':'https://www.rustinouderschap.nl/wp-content/uploads/workshopgevoelig/rio-achter-heftig-gedrag.jpg', 'ws-broer-zus':'https://www.rustinouderschap.nl/wp-content/uploads/2026/06/persoonlijk-plan-family-cta.jpg', 'ws-grenzen':'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/Grenzen.jpg', 'ws-kalm-blijven':'https://www.rustinouderschap.nl/wp-content/uploads/2024/12/Aanbod-Minder-Boos-16.jpg', 'ws-prikkels-buiten':'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/Ontwerp-zonder-titel-17.jpg', 'ws-zelfzorg':'https://www.rustinouderschap.nl/wp-content/uploads/2023/05/Blog-uitgelichte-afbeelding-9.jpg', 'ws-communicatie':'https://www.rustinouderschap.nl/wp-content/uploads/2022/06/gebruikt-2.jpg', 'ws-meer-invloed':'https://www.rustinouderschap.nl/wp-content/uploads/2024/11/9-1.jpg', 'ws-schermtijd':'https://www.rustinouderschap.nl/wp-content/uploads/2024/11/8-1.jpg', 'ws-slapen':'https://www.rustinouderschap.nl/wp-content/uploads/2024/01/Peuter-is-bang-om-te-slapen.jpg', 'ws-hechtingsstijl':'https://www.rustinouderschap.nl/wp-content/uploads/2023/02/gebruikt-1.jpg', 'ws-hsp-eigenwil':'https://www.rustinouderschap.nl/wp-content/uploads/2026/04/Visuals-Workshop-Gevoelige-kinderen-6.jpg', 'ws-dagelijkse-struggles':'https://www.rustinouderschap.nl/wp-content/uploads/2023/03/gebruikt-13.jpg', 'ws-eten':'https://www.rustinouderschap.nl/wp-content/uploads/2021/08/gebruikt.jpg', 'ws-opstandig':'https://www.rustinouderschap.nl/wp-content/uploads/2024/09/Gebruikt.jpg', 'ws-huiswerk-motivatie':'https://www.rustinouderschap.nl/wp-content/uploads/2022/09/Kind-op-school-.jpg', 'ws-school-vastloopt':'https://www.rustinouderschap.nl/wp-content/uploads/2021/08/gebruikt-5.jpg', 'ws-executieve-functies':'https://www.rustinouderschap.nl/wp-content/uploads/2026/05/Kleuter-en-jong-kind-6.jpg', 'ws-puber-executieve-functies':'https://www.rustinouderschap.nl/wp-content/uploads/2021/10/igordoon-primus-Pb0NiOMae0w-unsplash-scaled.jpg', 'ws-meeloopgedrag':'https://www.rustinouderschap.nl/wp-content/uploads/2026/06/community-pubers.jpg', 'ws-zelfvertrouwen':'https://www.rustinouderschap.nl/wp-content/uploads/2025/08/Visuals-Workshop-Gevoelige-kinderen-2025-08-25T083733.666.jpg', 'ws-hoogbegaafdheid-diagnoses':'https://www.rustinouderschap.nl/wp-content/uploads/2024/11/gebruikt-3.jpg', 'ws-vakantie-zonder-strijd':'https://www.rustinouderschap.nl/wp-content/uploads/2023/12/Blog-uitgelichte-afbeelding-3.jpg', 'ws-executieve-functies-dagelijks':'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/executieve-functies-header-visual.jpg', 'ws-vroegkinderlijk-trauma':'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/Ouders.jpg', 'ws-gescheiden-samengesteld':'https://www.rustinouderschap.nl/wp-content/uploads/2021/08/gebruikt-4.jpg', 'ws-zindelijkheid':'https://www.rustinouderschap.nl/wp-content/uploads/2023/02/gebruikt-4-2.jpg', 'ws-eft-tapping':'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/workbook-emoties-reguleren-B_JNOa43.jpg', 'ws-opas-omas':'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/65ec988d-3290-4d41-b14b-5d4d56c43fb6.jpg', 'adhd-begrijpen':'https://www.rustinouderschap.nl/wp-content/uploads/2026/08/10-adhd-bibliotheek-1.jpg', 'adhd-ef':'https://www.rustinouderschap.nl/wp-content/uploads/2026/08/10-adhd-bibliotheek.jpg', 'adhd-emoties':'https://www.rustinouderschap.nl/wp-content/uploads/2026/08/adhd-bibliotheek.jpg', 'adhd-thuis':'https://www.rustinouderschap.nl/wp-content/uploads/2026/08/ADHD-workshop-en-bieb.jpg', 'adhd-school':'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/adhd-ipad-school-theme-BVaVPZkB.jpg', 'adhd-diagnostiek':'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/adhd-ipad-video-detail-D9gDj2Il.jpg', 'adhd-sociaal':'https://www.rustinouderschap.nl/wp-content/uploads/2026/08/Workshop-ADHD-1.jpg', 'adhd-zelfbeeld':'https://www.rustinouderschap.nl/wp-content/uploads/2026/08/ADHD-bieb.jpg', 'adhd-tools':'https://www.rustinouderschap.nl/wp-content/uploads/2026/07/adhd-ipad-library-overview-C4QOqUoz.jpg', 'adhd-zelfzorg':'https://www.rustinouderschap.nl/wp-content/uploads/2026/08/Workshop-ADHD.jpg', 'expertchat':RIO_SUPPORT_MOCKUP, 'community':RIO_COMMUNITY_MOCKUP, 'meditaties':RIO_MEDITATION_MOCKUP }; function imagePick(list,seed){ let total=0;String(seed||'').split('').forEach(ch=>{total+=ch.charCodeAt(0);}); return list[total%list.length]; } function routeButton(parent,label=CTA_LABEL,variant='',url=null){ const link=add(parent,'a',label,'rio-route-button'+(variant?' '+variant:'')); link.href=url||selectedCheckoutUrl||CHECKOUT_URL; link.target='_blank'; link.rel='noopener'; link.dataset.rioCheckoutLink='true'; return link; } function routePricingButton(parent,label=CTA_LABEL,variant=''){ const link=add(parent,'a',label,'rio-route-button'+(variant?' '+variant:'')); link.href='#rio-betaalblok'; link.onclick=event=>{ event.preventDefault(); const target=document.getElementById('rio-betaalblok')||document.querySelector('#rio-chat .rio-price-single'); if(target)target.scrollIntoView({behavior:'smooth',block:'start'}); }; return link; } function cleanRouteText(value){ return cleanAiText(value) .replace(/[“”"]/g,'') .replace(/\bJe vertelde(?: ook)?(?: dat|:)?\s*/gi,'') .replace(/\bJe gaf aan(?: dat)?\s*/gi,'') .replace(/\bDeze route\b/g,'Deze opbouw') .replace(/\bdeze route\b/g,'deze opbouw') .trim(); } function dataOf(item){return CATALOG[item?.id]||{};} function titleOf(item){const data=dataOf(item);return data.titel||data.t||'Onderdeel';} function kindOf(item){const data=dataOf(item);return data.soort||data.k||'Onderdeel';} function durationOf(item){const data=dataOf(item);return data.duur||data.m||'';} function productMeta(item){const kind=kindOf(item),duration=durationOf(item);if(!duration)return kind;return duration.toLowerCase().startsWith(kind.toLowerCase())?duration:`${kind} · ${duration}`;} function addImage(parent,src,alt,cls=''){ const img=document.createElement('img'); img.src=src; img.alt=alt||''; img.loading='eager'; img.decoding='async'; if(cls)img.className=cls; parent.appendChild(img); return img; } function imageFor(item){ const id=item?.id||'',kind=kindOf(item); if(kind==='Workshop')return RIO_WORKSHOP_MOCKUP; if(PRODUCT_IMAGE_BY_ID[id])return PRODUCT_IMAGE_BY_ID[id]; const mapped=IMAGE_BY_ID[id]; if(mapped&&RIO_IMAGES[mapped])return RIO_IMAGES[mapped]; if(id.startsWith('adhd-'))return RIO_IMAGES.adhd; if(kind==='Cursus')return imagePick([RIO_IMAGES.course,RIO_IMAGES.emotions,RIO_IMAGES.moment],id); return RIO_IMAGES.start; } function learningOf(item){const data=dataOf(item);return cleanRouteText(data.watLeerJe||item?.belofte||data.d||'Je maakt het eerste moeilijke moment kleiner en concreter.');} function descOf(item){const data=dataOf(item);return cleanRouteText(item?.waarom||data.kiesDitAls||data.d||data.watLeerJe||'Dit onderdeel past bij wat er nu thuis speelt.');} function gainsOf(item){const data=dataOf(item);const gains=item?.opbrengst&&item.opbrengst.length?item.opbrengst:(Array.isArray(data.watVerandertThuis)?data.watVerandertThuis:data.o||[]);return gains.map(cleanRouteText).filter(Boolean).slice(0,3);} function uniqueItems(items){ const seen=new Set(),out=[]; for(const item of items){ if(!item||!CATALOG[item.id]||seen.has(item.id))continue; seen.add(item.id);out.push(item); } return out; } const firstLesson=route.nu||{id:'startmodule'}; const nextItems=uniqueItems([...(route.daarna||[]),...(route.verder||[])]); const secondLesson=nextItems[0]||firstLesson; let choiceItems=uniqueItems([...(route.daarna||[]).slice(1),...(route.verder||[]),...nextItems]).filter(item=>item.id!==firstLesson.id&&item.id!==secondLesson.id).slice(0,3); if(!choiceItems.length)choiceItems=nextItems.filter(item=>item.id!==firstLesson.id).slice(0,3); const fallbackExpert={id:'expertchat',waarom:'Voor als algemene uitleg net niet genoeg is en je wilt dat een professional concreet meekijkt.',opbrengst:gainsOf({id:'expertchat'})}; const fallbackCommunity={id:'community',waarom:'Voor herkenning en ervaringen van andere ouders, naast wat jij volgt.',opbrengst:gainsOf({id:'community'})}; const supportItems=uniqueItems([route.terugval,fallbackExpert,fallbackCommunity]).filter(item=>['expertchat','community'].includes(item.id)); if(!supportItems.some(item=>item.id==='expertchat'))supportItems.unshift(fallbackExpert); if(!supportItems.some(item=>item.id==='community'))supportItems.push(fallbackCommunity); const meditationSupport={ id:'meditaties', waarom:cleanRouteText(route.voorJou?.waarom)||'Een extra rustmoment voor jou of je kind, los van de stappen in je route.', opbrengst:['Even zakken uit spanning.','Rustiger verder na een moeilijk moment.','Korte oefeningen voor tussendoor.'] }; const rawName=cleanAiText(state.answers.kind||''); const routeName=rawName&&!/^(je kind|jouw kind|liever niet zeggen)$/i.test(rawName)?rawName:''; const childLabel=routeName||'jouw kind'; const sourceText=lower([state.answers.probleem,state.answers.doorvraag,state.answers.doorvraag_extra,state.answers.eerste_anders,state.answers.diagnose].filter(Boolean).join(' ')); function outcomeTitle(){ if(/boos|drift|woed|ontplof|slaan|schoppen|bijten/.test(sourceText))return `Meer rust op moeilijke momenten met ${childLabel}`; if(/slaap|bed|nacht/.test(sourceText))return `Rustiger naar bed met ${childLabel}`; if(/scherm|tablet|telefoon|game|youtube|ipad|tv/.test(sourceText))return `Minder strijd rond schermen`; if(/angst|bang|piek|zorg|onzeker/.test(sourceText))return `Meer houvast bij spanning van ${childLabel}`; if(/huiswerk|schoolwerk|concentr|motivatie|plannen/.test(sourceText))return `Meer grip op starten en volhouden`; if(/puber|tiener/.test(sourceText))return `Contact houden zonder alles los te laten`; return `Een eerste plan dat past bij ${childLabel}`; } function recognitionText(){ const recognition=cleanRouteText(route.herkenning); if(recognition)return recognition; if(/school/.test(sourceText)&&/goed|prima|ok[eé]/.test(sourceText)&&/thuis/.test(sourceText))return `Dat contrast kan verwarrend zijn: buitenshuis lijkt het te lukken, terwijl thuis juist de meeste spanning zichtbaar wordt. Daarom begint dit plan bij het moment waarop het thuis omslaat, niet bij een algemene uitleg over gedrag.`; const story=cleanRouteText(route.verhaal); if(story)return story; return `Wat je beschrijft vraagt om kleine stappen die precies passen bij jouw moment. Eerst rust in wat steeds terugkomt, daarna pas verder uitbouwen.`; } function focusForFirstStep(){ const focus=cleanRouteText(route.focus||''); if(focus)return focus.replace(/^Deze week:\s*/i,''); return `Deze week kies je één herkenbaar moment waarop je anders wilt reageren.`; } { const featuredCandidates=uniqueItems([...nextItems,firstLesson]).filter(item=>!['expertchat','community','meditaties'].includes(item.id)); const preferredWorkshopId={ boos:'ws-sterk-voelen', luisteren:'ws-grenzen', angst:'cursus-angst-de-baas', plannen:'ws-executieve-functies', school:'ws-school-vastloopt', slapen:'ws-slapen', gezin:'ws-broer-zus', ouder:'ws-kalm-blijven', scherm:'ws-schermtijd', puber:'cursus-pittige-pubers' }[routeTheme()]||''; const featuredWorkshop=preferredWorkshopId?{id:preferredWorkshopId}:featuredCandidates.find(item=>kindOf(item)==='Workshop')||featuredCandidates.find(item=>kindOf(item)==='Cursus')||firstLesson; const featuredTitle=titleOf(featuredWorkshop); const featuredKindLabel=kindOf(featuredWorkshop)==='Cursus'?'cursus':'workshop'; const featuredMeta=productMeta(featuredWorkshop); const literalStory=String(state.answers.probleem||'').trim(); const wantsFirst=cleanAiText(state.answers.eerste_anders||''); const childFirstName=childLabel.charAt(0).toUpperCase()+childLabel.slice(1); const supportTitle=supportItems.map(titleOf).filter(Boolean).join(' en '); function singleSection(parent,cls=''){ return add(parent,'section',null,`rio-single-section${cls?' '+cls:''}`); } function singleKicker(parent,text,cls=''){ return add(parent,'span',text,`rio-single-kicker${cls?' '+cls:''}`); } function singleLead(parent,text){ return add(parent,'p',text,'rio-single-lead'); } function singleFactChips(){ const chips=[]; if(routeName)chips.push(['Naam',routeName]); if(state.answers.leeftijd)chips.push(['Leeftijd',cleanAiText(state.answers.leeftijd)]); if(/\b(broer|broertje|zus|zusje|siblings|brus|kinderen)\b/i.test(sourceText))chips.push(['Thuis','Broer of zus genoemd']); else if(state.answers.gezin&&!/nee|geen|alleen/i.test(state.answers.gezin))chips.push(['Thuis',cleanAiText(state.answers.gezin)]); if(/\b(na school|uit school)\b/i.test(sourceText))chips.push(['Moment','Na school genoemd']); else if(/\b(ochtend|avond|bedtijd|eten|slapen|huiswerk|scherm|thuis)\b/i.test(sourceText)){ const match=sourceText.match(/\b(ochtend|avond|bedtijd|eten|slapen|huiswerk|scherm|thuis)\b/i); chips.push(['Moment',match?match[0]:'Thuis']); } if(state.answers.diagnose&&!/^(nee|geen|niet|nvt)/i.test(cleanAiText(state.answers.diagnose)))chips.push(['Diagnose of hulp',cleanAiText(state.answers.diagnose)]); else chips.push(['Diagnose of hulp','Niet genoemd']); return chips.slice(0,5); } function safeRouteTitleText(value){ return cleanRouteText(value) .replace(/\bdriftbuien\b/gi,'heftige momenten') .replace(/\bdriftbui\b/gi,'heftig moment') .replace(/\bbuien\b/gi,'heftige momenten') .replace(/\bbui\b/gi,'heftig moment') .replace(/[.?!]+$/,'') .trim(); } function routeTheme(){ const chosen=lower(state.answers.probleem||''); if(/ik wil zelf rustiger|jij als ouder/.test(chosen))return 'ouder'; if(/school en leren/.test(chosen))return 'school'; if(/concentreren, plannen|executieve functies/.test(chosen))return 'plannen'; if(/broers en zussen/.test(chosen))return 'gezin'; if(/boosheid en driftbuien/.test(chosen))return 'boos'; if(/luisteren en grenzen/.test(chosen))return 'luisteren'; if(/angst en onzekerheid/.test(chosen))return 'angst'; if(/slapen rustiger/.test(chosen))return 'slapen'; if(/puber|pubergedrag|tiener/.test(chosen))return 'puber'; if(/jij als ouder|zelf rustiger|zelf kalm|hoe ik reageer|mijn reactie|mijn eigen reactie|trigger/.test(sourceText))return 'ouder'; if(/scherm|tablet|telefoon|game|youtube|ipad|tv/.test(sourceText))return 'scherm'; if(/slaap|slapen|bed|nacht|wakker/.test(sourceText))return 'slapen'; if(/angst|bang|piek|zorg|onzeker/.test(sourceText))return 'angst'; if(/broer|broertje|zus|zusje|andere kinderen|elkaar|slaat|schopt|duwt|bijt/.test(sourceText)&&/\b(broer|broertje|zus|zusje|andere kinderen|elkaar)\b/.test(sourceText))return 'gezin'; if(/huiswerk|schoolwerk|concentr|motivatie|plannen|organiseren|starten|onthouden|afmaken/.test(sourceText))return 'plannen'; if(/school|leren|juf|meester|klas|toets/.test(sourceText)&&!/op school (?:gaat het )?(?:goed|prima|ok[eé])/.test(sourceText))return 'school'; if(/puber|tiener|respectloos|brutaal/.test(sourceText))return 'puber'; if(/luister|discussie|tegenspre|grens|weigeren|nee zeggen/.test(sourceText))return 'luisteren'; if(/boos|drift|woed|ontplof|overstuur|frustr|slaan|schoppen|bijten/.test(sourceText))return 'boos'; return 'breed'; } function singleTitle(){ if(wantsFirst)return `Eerst werken aan: ${safeRouteTitleText(wantsFirst)}`; if(/boos|drift|woed|ontplof|slaan|schoppen|bijten/.test(sourceText))return `Meer rust als het thuis oploopt met ${childLabel}`; if(/school/.test(sourceText)&&/thuis/.test(sourceText))return `Meer houvast voor thuis met ${childLabel}`; if(/slaap|bed|nacht/.test(sourceText))return `Meer rust rond bedtijd met ${childLabel}`; if(/scherm|tablet|telefoon|game|youtube|ipad|tv/.test(sourceText))return `Minder strijd rond schermen`; if(/angst|bang|piek|zorg|onzeker/.test(sourceText))return `Meer houvast bij spanning van ${childLabel}`; if(routeTheme()==='school')return `Meer grip op wat er bij school en leren vastloopt`; if(routeTheme()==='ouder')return `Meer houvast in hoe jij wilt reageren`; return `Een eerste stap die past bij ${childLabel}`; } function singleRecognition(){ if(route.herkenning)return cleanRouteText(route.herkenning); if(/school/.test(sourceText)&&/goed|prima|ok[eé]/.test(sourceText)&&/thuis/.test(sourceText)){ return `Dat het op school wel lukt en thuis juist zichtbaar wordt, is een belangrijk contrast. Het zegt nog niet automatisch waardoor het komt. Het laat vooral zien dat de eerste stap thuis moet beginnen bij het moment waarop spanning zichtbaar wordt, zodat je niet hoeft te werken met een algemene verklaring.`; } if(/boos|drift|woed|ontplof|slaan|schoppen|bijten/.test(sourceText)){ return `Bij heftige reacties zie je vaak pas het buitenste stuk: boosheid, weigeren, slaan of ontploffen. Wat ervoor gebeurt is minstens zo belangrijk, omdat daar meestal de eerste aanknopingspunten zitten. Daarom blijft dit plan dicht bij het moment zelf en bij wat ${childLabel} laat zien.`; } if(route.verhaal)return cleanRouteText(route.verhaal); return `Wat je beschrijft vraagt niet om een grote lijst adviezen, maar om eerst heel precies kijken waar het vastloopt. Vanuit daar wordt de eerste stap kleiner, haalbaarder en beter passend bij jou thuis.`; } function singleParentEmotion(){ const theme=routeTheme(); const feelingSource=lower([state.answers.jij,state.answers.oudergevoel].filter(Boolean).join(' ')); let feeling=''; if(/schrik/.test(feelingSource))feeling='je soms schrikt van je eigen reactie'; else if(/\b(moe|uitgeput|op)\b/.test(feelingSource))feeling='je moe bent en weinig ruimte over hebt'; else if(/machteloos/.test(feelingSource))feeling='je je machteloos kunt voelen'; else if(/boos|kwaad|harder praten/.test(feelingSource))feeling='je eigen spanning ook oploopt'; else if(/rustig blijven/.test(feelingSource))feeling='je hard probeert rustig te blijven'; const neutralByTheme={ angst:`Als ${childLabel} bang of onzeker is, kun je tegelijk willen troosten, geruststellen en voorkomen dat de angst steeds meer ruimte inneemt. Dat zoeken kan veel van je vragen.`, slapen:`Als slapen moeizaam gaat, draag je niet alleen dat ene moment. Je voelt het vaak ook de volgende avond alweer aankomen, terwijl je eigen energie juist lager wordt.`, scherm:`Als stoppen met een scherm telkens vastloopt, moet jij in korte tijd schakelen van aankondigen naar begeleiden. Dat maakt een gewoon overgangsmoment snel zwaar.`, plannen:`Als beginnen, concentreren of afmaken steeds vastloopt, kun je veel tijd kwijt zijn aan helpen zonder goed te weten welk stukje je kind zelf nog niet overziet.`, school:`Als school of leren vastloopt, probeer je tegelijk te begrijpen wat je kind nodig heeft, af te stemmen met school en thuis de druk niet verder te laten oplopen.`, ouder:`Je wilt anders reageren op moeilijke momenten, maar doet dat vaak precies wanneer je zelf al moe, geraakt of onder druk bent. Dat maakt veranderen extra lastig.`, puber:`Als gesprekken snel kantelen, probeer je duidelijk te zijn en tegelijk het contact open te houden. Dat vraagt meer dan alleen de juiste woorden vinden.`, gezin:`Als meerdere kinderen betrokken zijn, moet je tegelijk zien wat er gebeurt, veiligheid bewaken en ieder kind aandacht geven. Dat is veel in één moment.`, boos:`Als spanning snel oploopt, moet je tegelijk aanwezig blijven, grenzen bewaken en voorkomen dat het moment groter wordt. Dat is veel in één keer.`, breed:`Wat je beschrijft vraagt dat je tegelijk kijkt, reageert en probeert te begrijpen wat je kind nodig heeft. Dat kan veel van je vragen.` }; const first=feeling ? `Dat je aangeeft dat ${feeling}, is belangrijk. Het zegt dat dit niet alleen een praktisch opvoedmoment is, maar ook iets dat bij jou vanbinnen veel vraagt.` : (neutralByTheme[theme]||neutralByTheme.breed); const middle={ angst:`Je wilt ${childLabel} serieus nemen zonder alles over te nemen of eindeloos gerust te moeten stellen. Het is logisch als je daarin soms twijfelt wat op dat moment helpt.`, slapen:`Je wilt ${childLabel} helpen ontspannen, maar je hebt zelf ook behoefte aan een einde van de dag. Die twee behoeften kunnen precies op hetzelfde moment botsen.`, plannen:`Je wilt ondersteunen zonder steeds te duwen of het over te nemen. Juist dat evenwicht is lastig wanneer je niet goed kunt zien waar de taak te groot wordt.`, school:`Je wilt helpen zonder dat thuis alles over school gaat. Het is logisch als je zoekt naar wat van jou is, wat je kind kan oefenen en wat school moet bieden.`, ouder:`Je hoeft niet eerst een altijd rustige ouder te worden. Je kunt één reactie kiezen die beter past bij hoe je wilt handelen en die stap voor stap oefenen.`, breed:`Je wilt aansluiten bij wat ${childLabel} nodig heeft en ondertussen ook het dagelijks leven laten doorgaan. Dat is veel tegelijk.` }; return [ first, middle[theme]||neutralByTheme[theme]||neutralByTheme.breed, `Je wilt niets liever dan ${childLabel} helpen. En juist daarom hakt het erin als dat niet lukt zoals je het voor je zag.` ]; } function addCheck(parent,text){ const item=add(parent,'li',null,'rio-single-check'); add(item,'span','✓','rio-single-checkmark'); add(item,'span',text); return item; } function addPlanButton(parent,label=CTA_LABEL,variant='',url=selectedCheckoutUrl||CHECKOUT_URL){ return routeButton(parent,label,variant,url); } function addPricingButton(parent,label=CTA_LABEL,variant=''){ return routePricingButton(parent,label,variant); } function renderMidCta(parent,kicker,heading,label,clickId){ const section=singleSection(parent,'rio-mid-cta'); const copy=add(section,'div',null,'rio-mid-cta-copy'); singleKicker(copy,kicker,'rio-purple-kicker'); add(copy,'h3',heading); const button=addPricingButton(section,label,'rio-mid-cta-button'); button.dataset.rioClickId=clickId; } function renderSingleHeader(){ const head=add(box,'div',null,'rio-route-headbar rio-single-headbar'); const brandOne=add(head,'div',null,'rio-route-brand'); const logoOne=add(brandOne,'img',null,'rio-route-logo'); logoOne.src=RIO_LOGO_ICON; logoOne.alt='OpvoedApp'; } function firstAttemptText(){ const theme=routeTheme(); return { boos:`Let één keer op het moment vlak vóór ${childLabel} boos wordt. Benoem rustig wat er nu gaat gebeuren en houd je zin kort.`, gezin:`Ga één keer iets eerder dichtbij staan zodra je merkt dat het tussen de kinderen oploopt. Stop wat pijn doet en gebruik één korte grenszin.`, angst:`Maak de volgende stap één maat kleiner. Benoem wat spannend is en kies samen alleen het eerstvolgende stukje.`, scherm:`Kondig het stopmoment één keer vooraf aan en benoem direct wat er ná het scherm komt.`, slapen:`Kies vanavond één vast beginpunt voor de overgang naar bed en houd alleen dat stukje hetzelfde.`, plannen:`Maak de taak zichtbaar als één eerste handeling. Vraag nog niet om het hele rijtje af te maken.`, school:`Kies één concreet schoolmoment dat vastloopt en beschrijf alleen wat je kind daar nog niet zelfstandig kan.`, ouder:`Kies één zin of handeling die je wilt gebruiken zodra je merkt dat jouw spanning stijgt. Meer hoeft nu nog niet anders.`, puber:`Kies één afspraak en zeg kort wat vaststaat én waar je kind zelf over mag beslissen.`, luisteren:`Geef één korte opdracht en wacht daarna even. Herhaal niet meteen en voeg nog geen tweede vraag toe.` }[theme]||`Kies één terugkerend moment en let alleen op wat er vlak vóór het vastlopen gebeurt.`; } function routeUnderstandingText(){ const theme=routeTheme(); const focus={ boos:`Bij wat je hierboven beschrijft, probeer je te begrijpen wat er onder de boosheid of heftige reactie van ${childLabel} zit, terwijl je zelf genoeg rust probeert te houden om te kunnen reageren.`, gezin:`Bij wat je hierboven beschrijft, probeer je te zien wat ieder kind nodig heeft, te stoppen wat pijn doet en ondertussen de verbinding met allebei te bewaren.`, angst:`Bij wat je hierboven beschrijft, probeer je de angst van ${childLabel} serieus te nemen, steun te geven en tegelijk niet alles over te nemen.`, scherm:`Bij wat je hierboven beschrijft, probeer je het stopmoment rond schermen duidelijk te begeleiden zonder dat ieder einde opnieuw een strijd wordt.`, slapen:`Bij wat je hierboven beschrijft, probeer je ${childLabel} te helpen zakken naar rust, terwijl jouw eigen dag ook al lang en vol is geweest.`, plannen:`Bij wat je hierboven beschrijft, probeer je ${childLabel} te helpen beginnen en volhouden zonder steeds te hoeven duwen of alles over te nemen.`, school:`Bij wat je hierboven beschrijft, probeer je te begrijpen waarom school of leren vastloopt en welke hulp ${childLabel} nodig heeft om weer verder te kunnen.`, ouder:`Bij wat je hierboven beschrijft, merk je dat moeilijke momenten ook iets met jou doen. Je wilt meer invloed op je eigen reactie zonder jezelf de schuld te geven.`, puber:`Bij wat je hierboven beschrijft, probeer je duidelijk te blijven en tegelijk het contact met ${childLabel} open te houden.`, luisteren:`Bij wat je hierboven beschrijft, probeer je duidelijk te zijn en tegelijk te voorkomen dat iedere vraag of grens opnieuw in discussie eindigt.`, breed:`Bij wat je hierboven beschrijft, probeer je te begrijpen wat ${childLabel} nodig heeft en tegelijk zelf genoeg ruimte te houden om te kunnen reageren.` }[theme]; const parentWords=cleanAiText(state.answers.jij||state.answers.oudergevoel||'').replace(/\s+/g,' ').trim(); const parentPreview=(parentWords.length>110?`${parentWords.slice(0,107).replace(/\s+\S*$/,'')}…`:parentWords).replace(/[.?!]+$/,''); const echo=parentPreview?` Je benoemde daarbij zelf: “${parentPreview}”.`:''; return `${focus}${echo} Ondertussen gaan het huishouden, afspraken, werk of zorgen voor anderen gewoon door. Dat is veel om tegelijk te dragen.`; } function routeSituationTitle(){ const theme=routeTheme(); return { boos:`${childFirstName} wordt snel boos. Dat is voor jou als ouder ook zwaar.`, gezin:`Het loopt tussen ${childLabel} en andere kinderen snel op. Dat is voor jou als ouder ook zwaar.`, angst:`${childFirstName} voelt zich vaak bang of gespannen. Dat is voor jou als ouder ook zwaar.`, scherm:'Stoppen met schermen loopt steeds uit op strijd. Dat is voor jou als ouder ook zwaar.', slapen:'Slapen geeft thuis steeds opnieuw spanning. Dat is voor jou als ouder ook zwaar.', plannen:`Beginnen en volhouden lukt ${childLabel} niet altijd. Dat is voor jou als ouder ook zwaar.`, school:`School of leren loopt vast bij ${childLabel}. Dat raakt jou als ouder ook.`, ouder:'Je wilt rustiger en zekerder kunnen reageren. Dat hoef je niet vanzelf al te kunnen.', puber:`Gesprekken met ${childLabel} lopen snel vast. Dat is voor jou als ouder ook zwaar.`, luisteren:'Luisteren en grenzen eindigen vaak in discussie. Dat is voor jou als ouder ook zwaar.', breed:`Waar ${childLabel} tegenaan loopt, raakt jou als ouder ook.` }[theme]||`Waar ${childLabel} tegenaan loopt, raakt jou als ouder ook.`; } function routeParentExperienceText(){ const theme=routeTheme(); const data={ boos:{ effort:`Je probeert de boosheid van ${childLabel} voor te zijn, rustig te blijven en tegelijk duidelijk te begrenzen. Toch kan een kleine teleurstelling of overgang sneller groot worden dan je verwacht.`, balance:`Wanneer de spanning van ${childLabel} samenkomt met de druk om snel te reageren en met alles wat jij die dag al hebt gedragen, raken jullie allebei uit balans.` }, gezin:{ effort:'Je probeert te stoppen wat pijn doet, beide kinderen te zien en ondertussen zelf rustig te blijven. In één moment wordt er dus heel veel van je gevraagd.', balance:`Wanneer de spanning tussen de kinderen samenkomt met jouw verantwoordelijkheid om te beschermen en te begrenzen, raken ${childLabel} en jij sneller uit balans.` }, angst:{ effort:`Je probeert ${childLabel} gerust te stellen, steun te geven en tegelijk te voorkomen dat de angst steeds meer gaat bepalen. Het is logisch dat je soms twijfelt wat werkelijk helpt.`, balance:`Wanneer de spanning van ${childLabel} samenkomt met jouw zorg en de druk om het goed te doen, raken jullie allebei sneller uit balans.` }, scherm:{ effort:'Je probeert vooraf duidelijk te zijn en rustig te blijven wanneer het scherm uit moet. Toch kan juist dat ene schakelmoment steeds opnieuw uitlopen op strijd.', balance:`Wanneer het lastige stopmoment samenkomt met jouw behoefte om verder te gaan met de dag, raken ${childLabel} en jij sneller uit balans.` }, slapen:{ effort:'Je probeert rust en voorspelbaarheid te bieden terwijl jouw eigen energie aan het einde van de dag ook lager is. Daardoor voelt ieder extra verzoek al snel zwaarder.', balance:`Wanneer de onrust van ${childLabel} samenkomt met vermoeidheid en jouw behoefte aan een einde van de dag, raken jullie allebei sneller uit balans.` }, plannen:{ effort:`Je probeert ${childLabel} te helpen met beginnen, onthouden en volhouden zonder alles over te nemen. Als het toch blijft liggen, ga je vaak steeds meer dragen.`, balance:`Wanneer het vastlopen van ${childLabel} samenkomt met jouw druk om alles op tijd af te krijgen, raken jullie allebei sneller uit balans.` }, school:{ effort:`Je probeert ${childLabel} te helpen met school en leren, contact te houden met school en tegelijk te voorkomen dat thuis alles om prestaties draait.`, balance:`Wanneer zorgen over school samenkomen met tijdsdruk en onduidelijkheid over wat helpt, ga jij al snel meer dragen dan haalbaar is.` }, ouder:{ effort:'Je merkt dat je op moeilijke momenten soms anders reageert dan je eigenlijk wilt. Dat betekent niet dat je tekortschiet; het betekent dat jouw automatische reactie ook aandacht en oefening nodig heeft.', balance:'Wanneer jouw eigen spanning oploopt, wordt rustig kiezen lastiger. Juist daarom helpt een vooraf gekozen kleine reactie meer dan jezelf achteraf verwijten maken.' }, puber:{ effort:`Je probeert duidelijk te blijven zonder ieder gesprek in een machtsstrijd te laten eindigen. Tegelijk wil je het contact met ${childLabel} niet kwijtraken.`, balance:`Wanneer de behoefte aan ruimte van ${childLabel} en jouw verantwoordelijkheid voor grenzen botsen, raken jullie allebei sneller uit balans.` }, luisteren:{ effort:`Je probeert iets rustig te vragen of een grens duidelijk te maken, zonder steeds opnieuw te hoeven uitleggen of in discussie te belanden. Toch kan een gewoon verzoek snel veel energie kosten.`, balance:`Wanneer de weerstand van ${childLabel} samenkomt met jouw behoefte om verder te kunnen, raken jullie allebei sneller uit balans.` }, breed:{ effort:`Je probeert te begrijpen wat ${childLabel} nodig heeft, het dagelijks leven door te laten gaan en zelf genoeg rust te houden om te reageren.`, balance:`Wanneer alles tegelijk samenkomt, raken ${childLabel} en jij sneller uit balans.` } }; return data[theme]||data.breed; } function renderSituation(parent){ const hero=singleSection(parent,'rio-single-hero'); const intro=add(hero,'div',null,'rio-route-intro-row'); const introCopy=add(intro,'div',null,'rio-route-intro-copy'); add(introCopy,'h1',routeSituationTitle(),'rio-single-title'); const compactStory=(literalStory||`Thuis loopt het met ${childLabel} niet zoals je graag wilt.`).replace(/\s+/g,' ').trim(); const storyPreview=compactStory.length>160?`${compactStory.slice(0,157).replace(/\s+\S*$/,'')}…`:compactStory; add(introCopy,'p',`“${storyPreview}”`,'rio-route-story'); add(introCopy,'p',routeUnderstandingText(),'rio-route-understanding'); add(introCopy,'p','Dat het nu niet lukt, betekent niet dat je tekortschiet. Er is iets anders nodig.','rio-route-reassurance'); const introVisual=add(intro,'figure',null,'rio-route-intro-visual'); const introImage=addImage(introVisual,RIO_ROUTE_MOCKUP,'Jouw persoonlijke route in de OpvoedApp'); introImage.onerror=()=>{introVisual.hidden=true;}; } function renderFirstAttempt(parent){ const section=singleSection(parent,'rio-first-attempt'); singleKicker(section,'Voor het eerstvolgende moeilijke moment','rio-orange-kicker'); add(section,'h2','Probeer eerst alleen dit.'); add(section,'p',firstAttemptText(),'rio-first-attempt-copy'); add(section,'p','Dit is geen complete oplossing. Het is een klein begin waarmee je kunt merken wat er thuis werkelijk gebeurt.','rio-first-attempt-note'); } function renderProfessionals(parent){ const guide=singleSection(parent,'rio-guide-card'); const guideMedia=add(guide,'figure',null,'rio-guide-mockup rio-guide-mockup-transparent'); const guideImg=addImage(guideMedia,RIO_PRO_FIRSTROW_MOCKUP,'Professionals van de OpvoedApp'); guideImg.onerror=()=>{guideImg.onerror=null;guideImg.src=RIO_ROUTE_MOCKUP;}; const guideCopy=add(guide,'div',null,'rio-guide-copy'); add(guideCopy,'h2','Ervaren professionals helpen ouders, kinderen en scholen verder.'); add(guideCopy,'p','Ons team brengt jarenlange ervaring mee uit psychologie, gedragswetenschap, jeugdzorg, ambulante begeleiding en jeugd-GGZ. In de ExpertChat kijkt een professional persoonlijk mee wanneer een stap anders loopt dan verwacht.'); const guideList=add(guideCopy,'ul',null,'rio-guide-list'); ['Gedragswetenschapper','Psycholoog','Specialistisch ambulant hulpverlener','Gezinsbegeleider','Jeugdhulpverlening en specialistische GGZ'].forEach(text=>addCheck(guideList,text)); } function renderBridge(parent){ const bridge=singleSection(parent,'rio-bridge-card'); add(bridge,'h2',`Dit is jouw eerste stap: ${featuredTitle}. Binnen 30 minuten weet je wat je morgen anders kunt doen.`); } function renderChangeCurve(parent){ const curve=add(parent,'div',null,'rio-change-curve'); curve.id='rio-change-curve'; const intro=add(curve,'div',null,'rio-change-curve-copy'); add(intro,'h3','Eerst oefenen, dan bijschaven.'); add(intro,'p','Je leert iets kleins, probeert het thuis, kijkt wat iets eerder of rustiger ging en past de volgende stap daarop aan.'); const visual=add(curve,'div',null,'rio-change-curve-visual'); visual.insertAdjacentHTML('beforeend',''); const steps=add(visual,'ol',null,'rio-change-curve-steps'); [ ['Leren','Je ziet wat er speelt'], ['Oefenen','Je probeert één kleine stap'], ['Terugkijken','Je ziet wat al iets werkte'], ['Bijschaven','Je probeert opnieuw met meer houvast'] ].forEach(([title,text],index)=>{ const item=add(steps,'li',null,`rio-change-curve-step is-${index+1}`); add(item,'span',String(index+1),'rio-change-curve-dot'); add(item,'strong',title); add(item,'small',text); }); add(curve,'p','De workshop is je eerste stap. De verandering ontstaat daarna doordat je blijft oefenen, terugkijken en bijschaven met steun van de OpvoedApp.','rio-change-curve-note'); } function renderChangeJourney(parent){ const section=singleSection(parent,'rio-bridge-card rio-change-journey'); singleKicker(section,'Na je eerste workshop','rio-purple-kicker'); add(section,'h2','Eén workshop is het begin. Blijvende verandering ontstaat door te blijven oefenen en bijschaven.'); add(section,'p',`Na iedere poging kijk je opnieuw: wat heeft ${childLabel} nu nodig, wat heb jij nodig en welke stap past daarbij? Zo wordt wat je leert steeds beter toepasbaar op gewone dagen thuis.`); renderChangeCurve(section); } function routeWorkshopDetails(){ const details={ boos:{ how:['Kies één terugkerend moment waarop de reactie snel groot wordt.','Leer herkennen wat er vlak vóór de boosheid of drift gebeurt.','Oefen één kleine stap die jou en je kind in dat moment meer houvast geeft.'], moment:'Je gebruikt wat je leert in één gewoon moment waarop de spanning oploopt.' }, luisteren:{ how:['Kies één situatie waarin je nu vaak moet herhalen of in discussie belandt.','Leer waardoor je vraag of grens op dat moment niet goed binnenkomt.','Oefen één duidelijke manier van begrenzen die past bij jullie situatie.'], moment:'Je oefent tijdens één gewone vraag, afspraak of grens in jullie dag.' }, angst:{ how:['Kies één situatie waarin angst of onzekerheid nu veel bepaalt.','Leer herkennen wanneer steun helpt en wanneer overnemen de angst juist groter houdt.','Oefen één haalbare stap waarmee je kind nieuwe moed kan opbouwen.'], moment:'Je oefent bij één kleine spannende situatie die bij je kind past.' }, plannen:{ how:['Kies één taak waarbij starten, plannen, onthouden of afronden vaak vastloopt.','Leer welke executieve functie daar op dat moment wordt gevraagd.','Oefen één passende vorm van steun zonder de taak helemaal over te nemen.'], moment:'Je oefent bij één dagelijkse taak, zoals aankleden, opruimen of huiswerk.' }, school:{ how:['Kies één schoolsituatie die nu steeds spanning of vastlopen geeft.','Leer onderscheiden welke eis, vaardigheid of belasting daaronder meespeelt.','Oefen één passende stap die thuis, op school of samen kan worden ingezet.'], moment:'Je begint bij één concreet moment rond leren, huiswerk of naar school gaan.' }, slapen:{ how:['Kies het deel van de avond waarop bedtijd meestal vastloopt.','Leer wat je kind nodig heeft om de overgang naar slapen beter te kunnen maken.','Oefen één herkenbare stap in jullie bestaande avondritme.'], moment:'Je probeert de stap uit tijdens één vast onderdeel van de avond.' }, gezin:{ how:['Kies één terugkerend moment waarop het tussen de kinderen misgaat.','Leer zien wat ieder kind op dat moment nodig heeft en wat jij eerst doet.','Oefen één vaste stap om te begrenzen en daarna weer contact te maken.'], moment:'Je oefent bij één herkenbaar moment tussen broers of zussen.' }, ouder:{ how:['Kies één situatie waarin jij merkt dat je sneller reageert dan je wilt.','Leer jouw eigen omslagpunt en automatische reactie eerder herkennen.','Oefen één reactie die haalbaar blijft, ook als de dag al veel van je vraagt.'], moment:'Je oefent bij één dagelijks moment dat jou nu vaak raakt of triggert.' }, scherm:{ how:['Kies één schermmoment waarop stoppen nu vaak strijd geeft.','Leer wat het omschakelen van je kind op dat moment zo moeilijk maakt.','Oefen één voorspelbare stap voor het stoppen en doorgaan naar wat erna komt.'], moment:'Je gebruikt de stap bij één dagelijks stopmoment van telefoon, tablet of game.' }, puber:{ how:['Kies één afspraak of gesprek dat nu vaak in discussie of afstand eindigt.','Leer waar jouw grens nodig is en waar je puber ruimte voor invloed kan krijgen.','Oefen één manier van bespreken die duidelijkheid en contact naast elkaar laat bestaan.'], moment:'Je oefent bij één gewone afspraak over bijvoorbeeld school, thuiskomen of telefoon.' } }; return details[routeTheme()]||{ how:[`Open de workshop ${featuredTitle} op een moment dat voor jou past.`,'Kies één onderdeel dat aansluit op wat er nu speelt.','Oefen één kleine stap in een gewoon moment van jullie dag.'], moment:'Je gebruikt wat je leert in één herkenbaar dagelijks moment.' }; } function renderWorkshop(parent){ const section=singleSection(parent,'rio-workshop-flow'); section.id='rio-eerste-stap'; const heading=add(section,'header',null,'rio-workshop-heading'); add(heading,'h2',`Dit is jouw eerste stap: de ${featuredKindLabel} ${featuredTitle}.`,'rio-workshop-first-step'); add(heading,'p','Daar leer je één kleine stap die past bij wat er bij jullie speelt. Je probeert die in het dagelijks leven, kijkt wat al iets beter gaat en oefent opnieuw.','rio-workshop-subtitle'); const media=add(section,'figure',null,'rio-workshop-image'); addImage(media,RIO_WORKSHOP_MOCKUPS[routeTheme()]||RIO_WORKSHOP_MOCKUP,featuredTitle); const workshopDetails=routeWorkshopDetails(); const steps=add(section,'div',null,'rio-workshop-stepper'); const stepData=[ {nr:'01',title:'Wat het je kost',body:[ '10 tot 20 minuten per week.', workshopDetails.moment, 'Geen lange opdrachten: je begint met één stap die haalbaar voelt.' ]}, {nr:'02',title:'Dit bereik je ermee',result:true,body:routeResultLines()} ]; let openStep=0; const stepNodes=[]; function setOpen(index){ openStep=index; stepNodes.forEach((node,i)=>{ const isOpen=i===openStep; node.classList.toggle('is-open',isOpen); node.querySelector('button')?.setAttribute('aria-expanded',String(isOpen)); }); } stepData.forEach((step,index)=>{ const item=add(steps,'article',null,`rio-workshop-step${step.result?' rio-result-step':''}`); const button=add(item,'button',null,'rio-workshop-step-head'); button.type='button'; button.setAttribute('aria-expanded',index===0?'true':'false'); add(button,'span',step.nr,'rio-workshop-step-nr'); add(button,'strong',step.title); add(button,'span','Open','rio-workshop-open-label'); const body=add(item,'div',null,'rio-workshop-step-body'); if(step.result){ add(body,'h3','Dit is de verandering die je gaat merken.'); const list=add(body,'ul',null,'rio-result-list'); step.body.forEach(text=>addCheck(list,text)); } else { const list=add(body,'ul',null,'rio-workshop-bullets'); step.body.forEach(text=>add(list,'li',text)); } const action=add(body,'button',indexindexsetOpen(index); stepNodes.push(item); }); setOpen(0); addPricingButton(section,'Start workshop','rio-workshop-cta'); } function routeResultLines(){ const theme=routeTheme(); const common=['Je merkt eerder wanneer het mis dreigt te gaan.','Je weet beter wat je op dat moment kunt doen.','Na een moeilijk moment vinden jullie elkaar makkelijker terug.']; if(theme==='boos')return ['Je merkt eerder wat er vóór een heftige reactie gebeurt.','Je kind weet beter wat er gebeurt wanneer de boosheid oploopt.','Jij hoeft midden in het moment minder te zoeken naar wat je moet doen.',...common.slice(1)]; if(theme==='luisteren')return ['Je ziet beter welke stap van luisteren of schakelen vastloopt.','Je hoeft minder vaak te herhalen of steeds meer uit te leggen.','Grenzen en vragen worden duidelijker voor je kind.','Discussies lopen minder vaak verder op.','Er blijft meer ruimte over voor contact.']; if(theme==='scherm')return ['Het wordt duidelijker wanneer het scherm echt stopt.','Je hoeft minder te onderhandelen.','Je kind weet eerder wat er daarna gebeurt.',...common.slice(0,2)]; if(theme==='slapen')return ['De avond verloopt vaker in dezelfde duidelijke volgorde.','Je merkt eerder welk stukje van bedtijd moeilijk is.','Je hoeft minder te trekken aan slapen zelf.',...common.slice(1)]; if(theme==='angst')return ['Je merkt eerder wanneer de angst begint.','Je reageert rustiger zonder de angst groter te maken.','Je kind weet beter wat er stap voor stap gaat gebeuren.',...common.slice(1)]; if(theme==='plannen')return ['Je ziet welke stap te groot is.','Beginnen of afronden wordt concreter.','Je geeft hulp zonder alles over te nemen.',...common.slice(1)]; if(theme==='school')return ['Je ziet beter welk stukje van school of leren vastloopt.','Je kiest gerichter welke hulp nodig is.','Thuis hoeft niet alles meer om school te draaien.',...common.slice(1)]; if(theme==='ouder')return ['Je merkt eerder wanneer jouw spanning oploopt.','Je weet beter hoe je wilt reageren.','Je hoeft jezelf achteraf minder te verwijten.',...common.slice(1)]; if(theme==='gezin')return ['Je ziet eerder wanneer het tussen kinderen oploopt.','Je kunt begrenzen zonder direct alles op te lossen.','Een ander kind beschermen wordt duidelijker.',...common.slice(1)]; if(theme==='puber')return ['Gesprekken veranderen minder snel in strijd.','Afspraken worden duidelijker en haalbaarder.','Je houdt contact zonder alles los te laten.',...common.slice(1)]; return ['Je ziet eerder wanneer spanning oploopt.',`${childFirstName} komt vaker sneller terug naar rust.`,'Je hoeft minder vaak achteraf te repareren.',...common.slice(1)]; } function routePsychoEducation(){ const theme=routeTheme(); if(theme==='breed'&&/school/.test(sourceText)&&/goed|prima|ok[eé]/.test(sourceText)&&/thuis/.test(sourceText)){ return { heading:'Je gaat eerder zien waar het thuis omslaat.', lead:`Dat ${childLabel} het in de ene omgeving beter redt dan thuis, betekent niet automatisch dat er één vaste oorzaak is. Het maakt vooral duidelijk dat de context veel uitmaakt en dat het thuis helpt om heel precies naar het kantelmoment te kijken.`, childTitle:`Wat er bij ${childLabel} kan gebeuren`, childText:'Een kind kan op het ene moment nog meewerken en op een ander moment ineens minder ruimte hebben om te schakelen, wachten of woorden te vinden. Dan zie je gedrag, terwijl de spanning vaak al eerder is begonnen.', parentText:'Voor jou is dat zwaar, omdat je reageert op wat er nú gebeurt en tegelijk probeert te begrijpen wat eronder zit. Daarom werkt een kleine, herhaalbare stap beter dan jezelf harder toespreken.', calloutTitle:`Het ligt niet aan jou. En het zegt nog niet dat ${childLabel} het expres doet.`, calloutText:'Het vraagt om eerder herkennen wat er gebeurt, niet om strenger worden.', cycleTitle:'De cirkel die snel ontstaat', cycleSub:'waar je thuis makkelijk in terechtkomt', cycle:[['Het moment kantelt','en het lijkt ineens groot te worden.'],['Jij moet tegelijk begrenzen en kalmeren','waardoor jouw eigen spanning ook kan stijgen.'],['Achteraf probeer je het beter te doen','maar zonder houvast begint het rondje opnieuw.']] }; } const data={ scherm:{ heading:'Stoppen met schermen is ook schakelen.', lead:`Voor ${childLabel} kan het stoppen met een scherm voelen als ineens uit iets getrokken worden. Het gaat dan niet alleen om willen luisteren, maar ook om de overgang van verdiept zijn naar iets anders moeten doen.`, childTitle:`Wat er bij ${childLabel} kan gebeuren`, childText:'Hoe voller de aandacht in het scherm zit, hoe lastiger het kan zijn om taal, tijd en afspraken meteen weer te pakken. Een voorspelbaar stopmoment geeft het brein eerder grip.', parentText:'Voor jou is het logisch dat dit vermoeiend wordt als elke stop opnieuw strijd geeft. Daarom helpt vooraf houvast vaak meer dan uitleggen midden in het conflict.', calloutTitle:'Het probleem zit vaak niet in één regel, maar in het overgangsmoment.', calloutText:'Daar begint de eerste kleine stap.', cycle:[['Het schermmoment loopt door','en stoppen komt te plots.'],['Jij gaat herhalen of waarschuwen','terwijl je kind nog niet geschakeld is.'],['Het eindigt in strijd','waardoor de volgende keer al gespannen begint.']] }, slapen:{ heading:'Bedtijd vraagt meer dan alleen naar boven gaan.', lead:`Slapen lukt vaak pas als het lijf en hoofd genoeg kunnen zakken. Als ${childLabel} juist bij bedtijd weerstand, onrust of uitstel laat zien, zit de ingang vaak in de overgang naar rust.`, childTitle:`Wat er bij ${childLabel} kan gebeuren`, childText:'Aan het einde van de dag is de rek kleiner. Dan kunnen afscheid nemen, donker, stilte of nog iets missen ineens groter voelen dan overdag.', parentText:'Voor jou kan dat zwaar zijn omdat juist de avond het moment is waarop jouw energie ook lager is. Een voorspelbare kleine stap helpt om niet elke avond opnieuw te moeten zoeken.', calloutTitle:'Bedtijd wordt rustiger door de overgang kleiner te maken.', calloutText:'Niet door harder aan slapen te trekken.', cycle:[['De avond duurt langer','en iedereen raakt vermoeider.'],['Je gaat trekken of toegeven','omdat je ook rust nodig hebt.'],['Bedtijd voelt steeds beladener','waardoor de volgende avond gespannen start.']] }, angst:{ heading:'Spanning heeft eerst veiligheid nodig.', lead:`Als ${childLabel} bang, onzeker of gespannen reageert, helpt het om klein te kijken: waar begint de spanning, wat maakt het groter en wat geeft net genoeg houvast om één stapje te zetten.`, childTitle:`Wat er bij ${childLabel} kan gebeuren`, childText:'Bij angst wil het brein vooral beschermen. Dan kan vermijden even opluchten, maar op langere termijn juist meer spanning geven als de stap te groot blijft.', parentText:'Voor jou is het zoeken tussen geruststellen, stimuleren en niet forceren. Daarom werkt een kleine oefenstap beter dan alles in één keer willen oplossen.', calloutTitle:'Je hoeft de angst niet weg te praten.', calloutText:'Je helpt door de volgende stap klein en veilig te maken.', cycle:[['Spanning wordt zichtbaar','en je kind wil weg of vermijden.'],['Jij probeert gerust te stellen','maar de angst zakt niet altijd.'],['Het moment wordt groter','waardoor oefenen steeds moeilijker voelt.']] }, plannen:{ heading:'Weten wat moet is niet hetzelfde als kunnen starten.', lead:`Als ${childLabel} moeite heeft met beginnen, plannen, onthouden of afmaken, kan het lijken alsof er niet wordt meegewerkt. Vaak is vooral de taak zelf te groot of te onduidelijk op dat moment.`, childTitle:`Wat er bij ${childLabel} kan gebeuren`, childText:'Executieve functies helpen bij starten, volgorde houden, tijd voelen en afmaken. Als één van die stappen hapert, kan gedrag eruitzien als uitstel, weerstand of afhaken.', parentText:'Voor jou kan dat voelen alsof je steeds moet trekken. De eerste stap is daarom niet harder controleren, maar de taak kleiner en concreter maken.', calloutTitle:'Het helpt om de start kleiner te maken.', calloutText:'Dan hoeft motivatie niet alles te dragen.', cycle:[['De taak voelt te groot','en beginnen lukt niet.'],['Jij gaat helpen, herinneren of duwen','waardoor de druk oploopt.'],['Je kind haakt verder af','en jij draagt uiteindelijk te veel.']] }, gezin:{ heading:'Eerst veiligheid, daarna pas oplossen.', lead:`Als er een broer, zus of ander kind geraakt wordt, moet je in één moment veel doen: stoppen, beschermen, begrenzen en daarna weer herstellen. Dat vraagt eerst om zicht op wat er vlak vóór dat moment gebeurt.`, childTitle:`Wat er bij ${childLabel} kan gebeuren`, childText:'Pijn doen of uithalen is gedrag dat begrensd moet worden, maar het zegt niet meteen wat de oorzaak is. De ingang zit vaak in het moment waarop spanning, teleurstelling of nabijheid te groot wordt.', parentText:'Voor jou is het extra intens omdat je niet alleen met één kind bezig bent. Een kleine stap vooraf kan helpen om eerder in te grijpen en minder te hoeven blussen.', calloutTitle:'Begrenzen mag duidelijk zijn zonder dat je alles meteen hoeft te verklaren.', calloutText:'De route begint bij eerder zien waar het kantelt.', cycle:[['Het loopt snel op','en een ander kind komt erbij in beeld.'],['Jij moet beschermen en begrenzen','waardoor er weinig ruimte overblijft.'],['Iedereen raakt hoger in spanning','en herstellen wordt lastiger.']] }, puber:{ heading:'Contact houden vraagt soms een andere ingang.', lead:`Bij pubers kan strijd snel gaan over toon, vrijheid of afspraken, terwijl eronder vaak behoefte aan autonomie én houvast zit. De kunst is niet alles loslaten, maar ook niet elk gesprek winnen.`, childTitle:`Wat er bij ${childLabel} kan gebeuren`, childText:'Een puber wil meer ruimte, terwijl plannen, remmen en gevolgen overzien nog in ontwikkeling zijn. Daardoor kan een gewone afspraak ineens voelen als controle.', parentText:'Voor jou is het zoeken naar duidelijk blijven zonder het contact kwijt te raken. Daarom begint dit plan bij één concreet gesprek of afspraakmoment.', calloutTitle:'Je hoeft niet harder te trekken om duidelijk te blijven.', calloutText:'Je hebt vooral taal en timing nodig die contact openhouden.', cycle:[['Een afspraak schuurt','en de toon verandert.'],['Jij probeert grip te houden','waardoor het gesprek harder wordt.'],['Beiden trekken zich terug of gaan in strijd','en de afspraak blijft alsnog onduidelijk.']] }, luisteren:{ heading:'Een gewone vraag kan snel als druk voelen.', lead:`Als luisteren of meewerken steeds in discussie eindigt, speelt er vaak meer dan alleen niet willen. ${childFirstName} moet stoppen, schakelen en begrijpen wat er wordt verwacht, precies op het moment dat jij verder moet.`, childTitle:`Wat er bij ${childLabel} kan gebeuren`, childText:'Een verzoek kan te groot, te plots of te onduidelijk binnenkomen. Dan zie je uitstel, tegenspreken of weigeren, terwijl het schakelen of beginnen op dat moment nog niet lukt.', parentText:'Voor jou is het zwaar als je steeds moet herhalen en uitleggen. Daardoor wordt een kleine vraag al snel een lang gesprek waarin jullie allebei meer spanning voelen.', calloutTitle:'Meer woorden zorgen niet altijd voor meer duidelijkheid.', calloutText:'Een korte opdracht en even wachttijd geven vaak meer houvast.', cycle:[['Je vraagt iets gewoons','maar de overgang komt lastig binnen.'],['Je herhaalt of legt meer uit','omdat er nog niets gebeurt.'],['Het wordt een discussie','waardoor de volgende vraag al gespannen begint.']] }, boos:{ heading:'Heftige reacties beginnen vaak vóór het gedrag.', lead:`Bij boosheid, slaan, schreeuwen of weigeren zie je vaak het eindpunt. De eerste ingang zit eerder: wat gebeurde er vlak ervoor, welke grens, overgang of teleurstelling werd te groot voor ${childLabel}.`, childTitle:`Wat er bij ${childLabel} kan gebeuren`, childText:'Als spanning te hoog oploopt, lukt nadenken, luisteren of kiezen tijdelijk minder goed. Dat maakt het gedrag niet oké, maar het verklaart waarom praten midden in het moment weinig landt.', parentText:'Voor jou is dat zwaar, omdat je tegelijk rustig wilt blijven en duidelijk moet begrenzen. Daarom begint verandering bij eerder herkennen en één kleine reactie die je kunt herhalen.', calloutTitle:`Het ligt niet aan jou. En het is geen vaststaand onwil-verhaal over ${childLabel}.`, calloutText:'Het moeilijke moment heeft houvast nodig voordat het groot wordt.', cycle:[['Spanning loopt op','en je ziet vooral het gedrag.'],['Jij moet snel reageren','waardoor jouw spanning ook kan stijgen.'],['Achteraf voelt het alsof je opnieuw tekortschiet','terwijl het vooral aan houvast ontbrak.']] } }; return data[theme]||{ heading:'Eerst begrijpen waar het echt vastloopt.', lead:`Wat je beschrijft vraagt om klein en precies kijken. Niet de hele opvoeding tegelijk, maar één terugkerend moment waarop ${childLabel} meer houvast nodig heeft.`, childTitle:`Wat er bij ${childLabel} kan gebeuren`, childText:'Soms lukt gedrag pas anders als het moment duidelijker, kleiner of voorspelbaarder wordt. Dan ontstaat er meer ruimte om te oefenen.', parentText:'Voor jou helpt het als de eerste stap haalbaar blijft, zodat je niet nog meer op je bord krijgt.', calloutTitle:'Klein beginnen is geen zwakke aanpak.', calloutText:'Het maakt de kans groter dat je het thuis echt kunt doen.', cycle:[['Hetzelfde moment komt terug','en je weet niet goed waar je moet beginnen.'],['Je probeert meer tegelijk','waardoor het zwaar blijft.'],['Een kleine stap geeft houvast','en maakt zichtbaar wat werkt.']] }; } function childToleranceBehaviors(){ const theme=routeTheme(); if(theme==='gezin')return [ ['Vechten',`uithalen, slaan, schoppen, duwen, schreeuwen of speelgoed hard afpakken.`], ['Vluchten','weglopen, zich verstoppen, naar een andere kamer gaan of ineens niets meer willen zeggen.'], ['Bevriezen','stilvallen, star kijken, niet meer reageren of alleen nog huilen.'], ['Te laag','hangerig worden, treuzelen, blijven hangen of juist prikkels zoeken bij broer of zus.'] ]; if(theme==='scherm')return [ ['Vechten','boos worden, onderhandelen, roepen, het scherm vasthouden of fysiek tegenwerken.'], ['Vluchten','weglopen met het scherm, doen alsof je niets hoort of zich terugtrekken.'], ['Bevriezen','niet reageren, blijven staren, niet kunnen kiezen wat de volgende stap is.'], ['Te laag','traag op gang komen, hangen, zuchten of opnieuw prikkels zoeken.'] ]; if(theme==='slapen')return [ ['Vechten','roepen, boos worden, uit bed komen, rekken of alles ter discussie stellen.'], ['Vluchten','uitstellen, nog iets moeten pakken, niet naar boven gaan of bij jou willen blijven.'], ['Bevriezen','stil worden, huilen, blokkeren of niet meer weten wat helpt.'], ['Te laag','hangerig worden, nergens toe komen of juist nog prikkels zoeken om wakker te blijven.'] ]; if(theme==='angst')return [ ['Vechten','boos reageren als iets moet, weigeren of controle willen houden.'], ['Vluchten','vermijden, wegkruipen, niet mee willen of steeds geruststelling zoeken.'], ['Bevriezen','dichtklappen, niets meer zeggen, huilen of niet meer kunnen kiezen.'], ['Te laag','afwezig worden, heel stil worden of afhaken.'] ]; return [ ['Vechten','boos worden, schreeuwen, slaan, schoppen, weigeren of discussiëren.'], ['Vluchten','weglopen, zich verstoppen, vermijden of doen alsof je niets zegt.'], ['Bevriezen','niet meer reageren, dichtklappen, huilen of geen woorden meer vinden.'], ['Te laag','traag worden, hangen, afhaken of juist extra prikkels zoeken.'] ]; } function parentToleranceBehaviors(){ return [ ['Vechten','harder praten, sneller corrigeren, dreigen, blijven uitleggen of de controle willen terugpakken.'], ['Vluchten','toegeven om rust te krijgen, het gesprek afkappen, afstand nemen of het moment vermijden.'], ['Bevriezen','niet meer weten wat je moet doen, stilvallen, overspoeld raken of achteraf blijven malen.'], ['Overnemen','alles regelen, blijven herhalen, kinderen uit elkaar halen en zelf alle spanning dragen.'] ]; } function addBehaviorList(parent,items){ const list=add(parent,'ul',null,'rio-behavior-list'); items.forEach(([label,text])=>{ const item=add(list,'li'); add(item,'strong',label); add(item,'span',text); }); return list; } function simpleWhatHappensHeading(){ const headings={ scherm:'Waarom stoppen met een scherm zo snel kan oplopen.', slapen:'Waarom bedtijd ineens zo lastig kan worden.', angst:'Waarom angst ineens zo groot kan voelen.', school:'Waarom het op school of met leren kan vastlopen.', plannen:'Waarom beginnen soms echt niet lukt.', ouder:'Waarom jij soms anders reageert dan je wilt.', gezin:'Waarom het tussen kinderen zo snel kan oplopen.', puber:'Waarom een gesprek zo snel kan omslaan.', luisteren:'Waarom een gewone vraag strijd kan worden.', boos:'Waarom boosheid zo snel groot kan worden.', breed:'Waarom het ineens zo kan oplopen.' }; return headings[routeTheme()]||headings.breed; } function parentStressExample(){ const examples={ scherm:'Het scherm moet uit, je hebt het al drie keer gezegd en je moet ondertussen ook verder met de avond. Je voelt irritatie opkomen en voor je het weet praat je harder of ga je dreigen.', slapen:'Het is laat, je bent zelf moe en er komt opnieuw een vraag of reden om uit bed te gaan. Je voelt je geduld verdwijnen en reageert korter dan je wilde.', angst:'Je kind durft opnieuw niet en jij moet kiezen tussen geruststellen, stimuleren of het overnemen. Je voelt de spanning oplopen en weet even niet meer wat helpt.', school:'Je ziet dat je kind vastloopt op school of met leren. Je wilt helpen, maar weet niet goed of je moet uitleggen, aansporen, contact opnemen met school of juist even ruimte moet geven.', plannen:'Je hebt al meerdere keren herinnerd aan dezelfde taak en er gebeurt nog niets. Je voelt de tijdsdruk en neemt het over of gaat harder duwen.', ouder:'Je hebt al veel geprobeerd, bent moe of voelt je geraakt door wat er gebeurt. Voor je het weet praat je harder, geef je toe of klap je juist dicht.', gezin:'Je hoort geschreeuw, ziet dat een kind wordt geslagen en wilt het meteen stoppen. Je lijf schiet aan. Voor je het weet praat je harder of grijp je sneller in dan je van plan was.', puber:'Een gewone afspraak verandert in een felle discussie. Je voelt dat je grip verliest en begint meer uit te leggen, te overtuigen of harder vast te houden.', luisteren:'Je vraagt iets voor de derde keer en krijgt nog steeds geen reactie. Je voelt je irritatie stijgen en maakt je stem harder voordat je rustig hebt kunnen kiezen wat je wilt doen.', boos:'Je kind schreeuwt of slaat en jij moet direct begrenzen. Je hartslag gaat omhoog en voor je het weet roep je terug of geef je meer uitleg dan je eigenlijk wilde.', breed:'Er gebeurt opnieuw iets terwijl je zelf al een drukke dag hebt gehad. Je voelt je lijf aanspannen en reageert sneller of harder dan je van plan was.' }; return examples[routeTheme()]||examples.breed; } function risingTensionSignals(){ const signals={ scherm:'de stem wordt luider, het scherm wordt steviger vastgehouden, onderhandelen begint of je kind reageert ineens niet meer', slapen:'je kind gaat meer rekken, roepen, huilen, bewegen of steeds opnieuw uit bed', angst:'je kind wordt stiller, klampt zich vast, wil weg, vraagt steeds om geruststelling of reageert juist boos', school:'je kind stelt schoolwerk uit, raakt spullen kwijt, haakt af, wordt boos, trekt zich terug of zegt dat het toch niet lukt', plannen:'je kind kijkt weg, treuzelt, begint over iets anders, wordt boos of komt helemaal niet tot starten', ouder:'je merkt dat je sneller praat, je lijf aanspant, je blijft uitleggen, harder corrigeert, toegeeft of juist stilvalt', gezin:'stemmen worden luider, kinderen komen dichter op elkaar, er wordt iets afgepakt, geduwd of geslagen', puber:'antwoorden worden korter, de toon wordt feller, je kind rolt met de ogen, loopt weg of gaat harder in discussie', luisteren:'je kind kijkt weg, reageert niet, zucht, spreekt tegen of loopt bij de vraag vandaan', boos:'de stem wordt harder, het lijf wordt strak, vuisten ballen, je kind gaat schreeuwen, gooien of slaan', breed:'de stem wordt luider, het lijf onrustiger, je kind zegt sneller nee, loopt weg of klapt juist helemaal dicht' }; return signals[routeTheme()]||signals.breed; } function routeTopicNarrative(){ const theme=routeTheme(); const info=routePsychoEducation(); const data={ plannen:{ intro:`${childFirstName} kan heel goed weten wat er moet gebeuren en toch niet beginnen of iets niet afmaken. Voor een taak moet je hoofd meerdere dingen regelen: onthouden wat je moet doen, bedenken waar je begint en doorgaan tot het klaar is.`, second:`Als één van die dingen niet lukt, zie je uitstellen, vergeten, boos worden of afhaken. Dat lijkt soms op niet willen, terwijl beginnen of doorgaan op dat moment echt niet lukt.`, childTitle:`Wat er bij ${childLabel} kan vastlopen`, childText:'Je ziet niet welke denkstap ontbreekt. Je ziet alleen dat de taak niet begint of niet afkomt.', childItems:[['Beginnen','weten wat moet, maar niet op gang komen.'],['Onthouden','een opdracht of afspraak onderweg kwijtraken.'],['Overzicht','niet weten wat eerst moet of hoe lang iets duurt.'],['Doorgaan','afgeleid raken of afhaken zodra iets moeite kost.']], parentTitle:'Wat dit bij jou kan oproepen', parentText:'Als jij ziet dat er niets gebeurt, ga je logisch genoeg meer herinneren, uitleggen of overnemen.', parentItems:[['Herinneren','steeds opnieuw zeggen wat er moet gebeuren.'],['Aansporen','meer druk zetten omdat de tijd doorgaat.'],['Overnemen','het uiteindelijk zelf regelen om gedoe te voorkomen.'],['Twijfelen','je afvragen of je kind niet wil of het echt niet kan.']], bridgeTitle:'Als beginnen niet lukt, wordt de taak steeds groter.', bridgeText:`${childFirstName} begint niet of raakt de draad kwijt. Jij herinnert, helpt of neemt het over, omdat je wilt helpen. Daardoor komt dezelfde taak de volgende keer weer bij jou terecht.`, showImage:true }, school:{ intro:`Als het op school of met leren vastloopt, zie je vaak alleen het resultaat: werk blijft liggen, toetsen vallen tegen, je kind haakt af of komt boos en moe thuis. Daaronder kan iets heel anders spelen, zoals moeite met concentreren, starten, onthouden, plannen of omgaan met druk.`, second:'Daarom begint deze route niet bij harder werken, maar bij uitzoeken welk stukje van leren of school voor jouw kind nu te veel vraagt.', childTitle:`Wat er bij ${childLabel} kan vastlopen`, childText:'Op school moet je kind luisteren, onthouden, beginnen, doorwerken en omgaan met fouten. Als één stukje moeilijk is, kan je kind wel willen maar toch niet laten zien wat het kan.', childItems:[['Aandacht','de uitleg missen of snel afgeleid raken.'],['Starten','blijven hangen voordat een taak begint.'],['Onthouden','instructies, spullen of stappen kwijtraken.'],['Druk','dichtklappen, boos worden of vermijden wanneer het te veel voelt.']], parentTitle:'Wat dit bij jou kan oproepen', parentText:'Je wilt voorkomen dat je kind verder achterop raakt en zoekt tegelijk naar wat echt helpt.', parentItems:[['Helpen','veel uitleggen of samen het werk doen.'],['Controleren','steeds vragen of iets af is of mee is.'],['Overleggen','met school of iemand die helpt bespreken wat er nodig is.'],['Zorgen','twijfelen of je genoeg doet en wat je kind nodig heeft.']], bridgeTitle:'Hoe meer druk er komt, hoe moeilijker school kan voelen.', bridgeText:`${childFirstName} stelt uit, haakt af of denkt dat het toch niet lukt. Jij helpt of spoort aan, omdat je je zorgen maakt. De druk wordt groter, terwijl nog niet duidelijk is welk stukje moeilijk is.`, showImage:true }, ouder:{ intro:'Je reactie ontstaat niet pas bij de woorden die je zegt. Vaak merk je eerst iets in je lijf: spanning, haast, irritatie, machteloosheid of de behoefte om het nu direct op te lossen.', second:'Dat betekent niet dat je het verkeerd doet. Als je moe, boos of gestrest bent, reageer je soms al voordat je rustig hebt kunnen nadenken.', childTitle:`Wat er bij ${childLabel} gebeurt`, childText:`Wat ${childLabel} doet, raakt iets bij jou. Daardoor kan jouw spanning snel oplopen.`, childItems:[['Een grens','je kind protesteert of blijft doorgaan.'],['Een overgang','stoppen of schakelen lukt niet meteen.'],['Een emotie','boosheid, verdriet of angst wordt groot.'],['Herhaling','hetzelfde moment komt steeds terug.']], parentTitle:'Wat er bij jou kan gebeuren', parentText:'Je wilt dat het moeilijke moment zo snel mogelijk stopt. Daardoor reageer je soms sneller of harder dan je wilde.', parentItems:parentToleranceBehaviors(), bridgeTitle:'Als jouw spanning stijgt, reageer je sneller.', bridgeText:'Als je moe, boos of gestrest bent, kun je minder rustig nadenken. Je praat harder, geeft toe of klapt dicht. Dat is geen onwil; je probeert een moeilijk moment op te lossen. Toch kan het de volgende keer weer zo gaan.', showImage:true }, angst:{ intro:`Als ${childLabel} bang of onzeker is, wil je kind zo snel mogelijk weg bij wat spannend voelt. Daarom kan je kind vermijden, zich aan jou vastklampen, vaak om geruststelling vragen of boos worden.`, second:'Dat is geen onwil. De situatie voelt op dat moment echt te spannend. Weggaan of iets niet doen geeft even rust, maar de angst komt de volgende keer vaak terug.', childTitle:`Wat je bij ${childLabel} kunt zien`, childText:'Angst kan er heel verschillend uitzien. Niet alleen als huilen of bang zijn.', childItems:childToleranceBehaviors(), parentTitle:'Wat dit bij jou kan oproepen', parentText:'Je wilt troosten en beschermen, maar ook voorkomen dat de angst steeds meer gaat bepalen.', parentItems:[['Geruststellen','steeds opnieuw uitleggen dat er niets gebeurt.'],['Overnemen','de spannende stap zelf oplossen.'],['Stimuleren','duwen omdat je weet dat vermijden niet helpt.'],['Twijfelen','niet weten wanneer je moet steunen of loslaten.']], bridgeTitle:'Vermijden helpt even, maar de angst komt terug.', bridgeText:`${childFirstName} gaat weg van wat spannend is en voelt zich even rustiger. Jij stelt gerust of neemt iets over, omdat je wilt helpen. Daardoor voelt hetzelfde moment de volgende keer weer net zo spannend.`, showImage:true }, scherm:{ intro:`Stoppen met een scherm vraagt van ${childLabel} dat de aandacht loskomt van iets boeiends en direct overschakelt naar iets anders. Dat schakelen kan veel moeilijker zijn dan het van buiten lijkt.`, second:'Je kind zit nog helemaal in het scherm en moet ineens stoppen en iets anders gaan doen. Daardoor kan er protest ontstaan, ook als de afspraak duidelijk was.', childTitle:`Wat je bij ${childLabel} kunt zien`, childText:'Het lastige zit vaak niet alleen in het scherm, maar in het plotseling moeten stoppen en omschakelen.', childItems:childToleranceBehaviors(), parentTitle:'Wat dit bij jou kan oproepen', parentText:'Jij moet verder met de dag en verwacht dat een gemaakte afspraak wordt gevolgd.', parentItems:[['Waarschuwen','nog één keer zeggen dat de tijd bijna om is.'],['Onderhandelen','toch extra minuten geven om strijd te voorkomen.'],['Herhalen','steeds opnieuw vragen om te stoppen.'],['Boos worden','harder reageren als niets lijkt binnen te komen.']], bridgeTitle:'Als stoppen steeds verschuift, komt dezelfde strijd terug.', bridgeText:`${childFirstName} vraagt om extra tijd. Jij waarschuwt nog een keer, legt het opnieuw uit of geeft een paar minuten erbij. Daardoor blijft onduidelijk wanneer het scherm echt uitgaat en begint de discussie de volgende keer opnieuw.`, showImage:true }, slapen:{ intro:`Aan het einde van de dag is bij ${childLabel} én bij jou vaak minder ruimte over. Slapen vraagt bovendien om stoppen, loslaten en zakken naar rust. Juist die overgang kan lastig zijn.`, second:'Je kind moet spelen en contact loslaten en naar rust gaan, juist als iedereen moe is. Daardoor kan bedtijd iedere avond opnieuw lastig voelen.', childTitle:`Wat je bij ${childLabel} kunt zien`, childText:'Onrust rond bedtijd kan eruitzien als uitstellen, boos worden, extra vragen of juist heel verdrietig worden.', childItems:childToleranceBehaviors(), parentTitle:'Wat dit bij jou kan oproepen', parentText:'Jouw dag is ook lang geweest en je hebt behoefte aan een duidelijk einde.', parentItems:[['Toegeven','nog één verzoek toestaan om rust te krijgen.'],['Aansporen','sneller willen omdat het al laat is.'],['Kort reageren','minder geduld hebben dan je van plan was.'],['Vooruitlopen','de volgende avond al spanning voelen aankomen.']], bridgeTitle:'Als bedtijd steeds anders loopt, begint de onrust opnieuw.', bridgeText:`${childFirstName} stelt uit, vraagt nog iets of komt uit bed. Jij stelt gerust, spoort aan of geeft nog één keer toe, omdat iedereen moe is. Daardoor weet je kind niet goed waar de avond eindigt en gebeurt de volgende avond vaak hetzelfde.`, showImage:true }, puber:{ intro:`Een puber wil steeds meer zelf beslissen, maar kan nog niet altijd goed plannen of vooraf bedenken wat de gevolgen zijn. Daardoor kan een gewone afspraak al snel voelen alsof jij alles bepaalt.`, second:'Dat betekent niet dat grenzen verdwijnen. Het verklaart waarom een gesprek over een afspraak zo snel een discussie kan worden.', childTitle:`Wat er bij ${childLabel} kan gebeuren`,childText:'Je puber probeert zelfstandiger te worden en kan tegelijk nog veel steun nodig hebben.', childItems:[['Zelf beslissen','zelf willen kiezen en fel reageren als jij bepaalt.'],['Overzicht','gevolgen of planning nog niet helemaal overzien.'],['Gevoelens','snel boos of fel reageren.'],['Contact','afstand nemen terwijl je kind jou nog steeds nodig heeft.']], parentTitle:'Wat dit bij jou kan oproepen',parentText:'Jij blijft verantwoordelijk en wilt tegelijk het contact niet verliezen.', parentItems:[['Uitleggen','meer argumenten geven om begrip te krijgen.'],['Vasthouden','strenger worden als afspraken schuiven.'],['Toegeven','loslaten om ruzie te voorkomen.'],['Twijfelen','zoeken naar waar ruimte stopt en leiding nodig is.']], bridgeTitle:'Meer uitleg kan zorgen voor meer verzet.',bridgeText:`Jij legt meer uit omdat je duidelijk wilt zijn en het contact goed wilt houden. ${childFirstName} kan dat voelen als controle en gaat harder tegenstribbelen. Zo gaat het gesprek steeds minder over de afspraak en steeds meer over wie er mag bepalen.`,showImage:true }, luisteren:{ intro:`Luisteren vraagt meer dan horen. ${childFirstName} moet merken dat je iets zegt, begrijpen wat je bedoelt, stoppen met wat er gebeurt en daarna beginnen. Eén gewone vraag bestaat dus uit meerdere stukjes.`, second:'Als één stukje niet lukt, lijkt het al snel alsof je kind niet wil luisteren. Je ziet dan vooral dat er niets gebeurt.', childTitle:`Wat er bij ${childLabel} kan vastlopen`,childText:'Je ziet niet altijd welke stap ontbreekt; je ziet vooral dat er nog niets gebeurt.', childItems:[['Horen','niet merken dat jij iets vraagt.'],['Stoppen','niet loskomen van waar je kind mee bezig is.'],['Begrijpen','niet goed weten wat je bedoelt.'],['Beginnen','wel weten wat moet, maar nog niet starten.']], parentTitle:'Wat dit bij jou kan oproepen',parentText:'Als er geen reactie komt, probeer jij logisch genoeg duidelijker te worden.', parentItems:[['Herhalen','dezelfde vraag steeds opnieuw stellen.'],['Meer woorden','extra uitleg en redenen toevoegen.'],['Harder praten','je stem verhogen om wel binnen te komen.'],['Overnemen','het uiteindelijk zelf doen om verder te kunnen.']], bridgeTitle:'Meer herhalen maakt luisteren niet altijd makkelijker.',bridgeText:`${childFirstName} reageert niet en jij herhaalt je vraag, omdat de dag verder moet. Je kind krijgt steeds meer woorden te verwerken en jij wordt moe. Zo wordt luisteren voor jullie allebei moeilijker en gebeurt de volgende keer vaak hetzelfde.`,showImage:true }, boos:{ intro:`Als de spanning bij ${childLabel} te hoog oploopt, worden nadenken, luisteren en kiezen tijdelijk veel moeilijker. Het lichaam reageert dan sneller dan het hoofd.`, second:`${parentStressExample()} Bij jou kan stress precies hetzelfde doen. Dat maakt het gedrag niet oké, maar het verklaart waarom praten midden in het moment vaak niet lukt.`, childTitle:info.childTitle,childText:`De spanning zelf kun je niet zien. Je ziet gedrag: ${risingTensionSignals()}.`,childItems:childToleranceBehaviors(), parentTitle:'Wat er bij jou kan gebeuren',parentText:'Ook jouw lichaam kan reageren voordat je rustig hebt kunnen kiezen.',parentItems:parentToleranceBehaviors(), bridgeTitle:'Bij veel spanning lukt nadenken minder goed.',bridgeText:`${childFirstName} kan dan minder goed luisteren of kiezen. Jouw spanning stijgt ook en je reageert sneller. Zo worden jullie allebei bozer en kan het de volgende keer weer hetzelfde gaan.`,showImage:true }, gezin:{ intro:`Als het tussen kinderen oploopt, moet jij in één moment stoppen wat pijn doet, veiligheid bewaken en meerdere kinderen helpen. Ondertussen kan de spanning bij iedereen snel stijgen.`, second:`${parentStressExample()} Ook jouw lichaam schiet dan sneller in reageren. Dat is logisch: je probeert direct te beschermen.`, childTitle:info.childTitle,childText:`Je ziet gedrag: ${risingTensionSignals()}. Misschien lukt iets niet, voelt iets oneerlijk of wordt alles bij elkaar te veel.`,childItems:childToleranceBehaviors(), parentTitle:'Wat er bij jou kan gebeuren',parentText:'Je moet snel handelen en hebt weinig tijd om rustig te bedenken wat je eerst doet.',parentItems:parentToleranceBehaviors(), bridgeTitle:'Als iedereen tegelijk reageert, wordt de ruzie groter.',bridgeText:'De kinderen reageren op elkaar en jij grijpt direct in om iedereen veilig te houden. Jouw spanning stijgt ook. Daardoor is er minder ruimte om te zien wat ieder kind nodig heeft en kan de volgende ruzie weer hetzelfde lopen.',showImage:true } }; return data[theme]||{ intro:info.lead,second:info.parentText,childTitle:info.childTitle,childText:info.childText, childItems:childToleranceBehaviors(),parentTitle:'Wat dit bij jou kan oproepen',parentText:'Je probeert te helpen en tegelijk het dagelijks leven door te laten gaan.',parentItems:parentToleranceBehaviors(), bridgeTitle:info.calloutTitle,bridgeText:info.calloutText,showImage:false }; } function renderWhatHappens(parent){ const info=routeTopicNarrative(); const section=singleSection(parent,'rio-understand-block'); const toleranceIntro=add(section,'div',null,'rio-tolerance-intro-row'); const toleranceCopy=add(toleranceIntro,'div',null,'rio-tolerance-intro-copy'); add(toleranceCopy,'h2',simpleWhatHappensHeading()); add(toleranceCopy,'p',info.intro); add(toleranceCopy,'p',info.second); const topicImage=RIO_TOPIC_IMAGES[routeTheme()]||RIO_TOLERANCE_IMAGE; if(info.showImage&&topicImage){ const toleranceImage=add(toleranceIntro,'figure',null,'rio-tolerance-image-panel'); const toleranceImg=addImage(toleranceImage,topicImage,'Uitleg die past bij dit onderwerp'); toleranceImg.loading='lazy'; toleranceImg.onerror=()=>{toleranceImage.classList.add('rio-img-parent-broken');toleranceImg.remove();}; } else toleranceIntro.classList.add('rio-topic-without-image'); const toleranceCards=add(section,'div',null,'rio-tolerance-card-row'); const childCard=add(toleranceCards,'article',null,'rio-understand-card rio-understand-card-child'); add(childCard,'h3',info.childTitle); add(childCard,'p',info.childText); addBehaviorList(childCard,info.childItems); const parentCard=add(toleranceCards,'article',null,'rio-understand-card rio-understand-card-parent'); add(parentCard,'h3',info.parentTitle); add(parentCard,'p',info.parentText); addBehaviorList(parentCard,info.parentItems); const bridge=add(section,'div',null,'rio-practice-bridge rio-practice-bridge-under-cards'); add(bridge,'h3',info.bridgeTitle); add(bridge,'p',`${info.bridgeText} Zo komen jullie samen in een cirkel terecht waarin hetzelfde blijft gebeuren.`); const insightCta=add(section,'a','Bekijk jouw eerste stap','rio-route-button rio-understand-cta'); insightCta.href='#rio-eerste-stap'; insightCta.dataset.rioClickId='inzicht_eerste_stap'; } function practiceExample(){ const theme=routeTheme(); const examples={ boos:[ ['Dit zie je',`${childFirstName} wordt heel boos, schreeuwt, slaat of klapt dicht wanneer iets niet lukt of anders gaat.`], ['Wat eraan voorafgaat','De grote reactie komt vaak aan het einde. Daarvoor lukte iets niet, veranderde er iets of voelde iets oneerlijk.'], ['Waarom oefenen nodig is','Je kind leert dit niet tijdens één grote boze bui. Daarvoor moet het vaker meemaken hoe boosheid begint en weer zakt.'] ], scherm:[ ['Dit zie je','Stoppen leidt tot protest, onderhandelen of helemaal niet reageren.'], ['Wat eronder gebeurt','Je kind zit nog helemaal in het scherm en moet ineens stoppen en iets anders gaan doen.'], ['Waarom oefenen nodig is','Stoppen wordt niet makkelijker doordat je het vaker zegt. Je kind moet vaker meemaken hoe zo’n overgang gaat.'] ], slapen:[ ['Dit zie je',`${childFirstName} rekt, komt uit bed, wordt onrustig of heeft steeds iets nieuws nodig.`], ['Wat eronder gebeurt','Je kind moet spelen en contact loslaten en naar rust gaan, juist als iedereen moe is.'], ['Waarom oefenen nodig is','Naar bed gaan wordt makkelijker als je kind vaak dezelfde duidelijke overgang meemaakt.'] ], angst:[ ['Dit zie je',`${childLabel} vermijdt, klampt zich vast, vraagt veel geruststelling of wordt boos zodra iets spannend voelt.`], ['Wat eronder gebeurt','Je kind wil zo snel mogelijk weg bij wat spannend voelt. Weggaan geeft even rust, maar de angst komt de volgende keer terug.'], ['Waarom oefenen nodig is','Moed groeit doordat je kind vaker merkt: het was spannend, maar ik kon het toch.'] ], plannen:[ ['Dit zie je',`${childLabel} begint niet, vergeet spullen, raakt afgeleid of maakt een taak niet af.`], ['Wat eronder gebeurt','Voor een taak moet je kind beginnen, onthouden wat de bedoeling is, de stappen op volgorde doen en doorgaan. Je ziet niet welk stukje moeilijk is.'], ['Waarom oefenen nodig is','Eerst moet duidelijk worden bij welk stukje je kind vastloopt. Anders help je misschien bij het verkeerde.'] ], school:[ ['Dit zie je',`${childLabel} laat minder zien dan erin zit, haakt af, vergeet instructies of raakt gespannen van schoolwerk.`], ['Wat eronder gebeurt','Voor school moet je kind luisteren, onthouden, beginnen, doorwerken en fouten verdragen. Een tegenvallend resultaat vertelt nog niet welk stukje moeilijk is.'], ['Waarom oefenen nodig is','Eerst moet duidelijk worden waar het precies misgaat. Dan wordt duidelijk waar je kind hulp bij nodig heeft.'] ], ouder:[ ['Dit zie je','Je praat harder, blijft uitleggen, geeft toe of klapt dicht terwijl je eigenlijk anders wilt reageren.'], ['Wat eronder gebeurt','Als je moe of gestrest bent, reageer je soms al voordat je er rustig over hebt kunnen nadenken.'], ['Waarom oefenen nodig is','Anders reageren lukt pas beter als je het vaker hebt kunnen oefenen.'] ], gezin:[ ['Dit zie je','Afpakken, duwen, schreeuwen, elkaar uitdagen of steeds opnieuw ruzie om hetzelfde.'], ['Wat eronder gebeurt','Samen spelen vraagt wachten, delen, woorden gebruiken en na een ruzie weer goedmaken.'], ['Waarom oefenen nodig is','Dat leren kinderen niet door één gesprek na een ruzie. Ze moeten het vaker meemaken en oefenen.'] ], puber:[ ['Dit zie je','Een gewone afspraak leidt tot fel reageren, discussiëren, weglopen of helemaal niets meer delen.'], ['Wat eronder gebeurt','Je puber wil zelf beslissen, maar kan nog niet altijd goed plannen of vooraf bedenken wat de gevolgen zijn. Daardoor botsen jullie sneller.'], ['Waarom oefenen nodig is','Zelfstandig worden leert je puber niet door één gesprek, maar door vaker verantwoordelijkheid te krijgen en daarvan te leren.'] ], luisteren:[ ['Dit zie je',`${childLabel} reageert niet, stelt uit, spreekt tegen of begint pas nadat jij het meerdere keren hebt gevraagd.`], ['Wat eronder gebeurt','Je kind moet horen dat je iets zegt, begrijpen wat je bedoelt, stoppen met wat het doet en daarna beginnen. Je ziet niet welk stukje moeilijk is.'], ['Waarom oefenen nodig is','Eerst moet duidelijk worden bij welk stukje het misgaat. Anders blijf je alleen het niet-luisteren zien.'] ], breed:[ ['Dit zie je','Hetzelfde moeilijke moment komt terug, terwijl uitleggen of harder proberen weinig blijvend verschil maakt.'], ['Wat eronder gebeurt','Je ziet vooral wat er misgaat. Je ziet nog niet welk stukje voor je kind moeilijk is.'], ['Waarom oefenen nodig is','Eerst moet duidelijk worden waar het vastloopt. Dan begrijp je waarom hetzelfde steeds terugkomt.'] ] }; return examples[theme]||examples.breed; } function renderCycleSection(parent){ const cycle=singleSection(parent,'rio-cycle-compact rio-cycle-section'); const theme=routeTheme(); const intro={ plannen:['Je ziet dat iets niet lukt, maar nog niet welk stukje moeilijk is.',`Beginnen, onthouden, plannen en afmaken zijn verschillende dingen. Als één stukje lastig is, lijkt het soms alsof ${childLabel} niet wil. Ondertussen ga jij vaker herinneren of overnemen, waardoor jullie de volgende keer op hetzelfde punt kunnen vastlopen.`], school:['Een tegenvallend resultaat vertelt nog niet waar je kind vastloopt.',`Misschien is de uitleg moeilijk, raakt ${childLabel} de stappen kwijt, lukt beginnen niet of is de druk te groot. Aan de buitenkant kan dat er allemaal uitzien als afhaken of niet willen. Daardoor groeit de druk, terwijl nog niet duidelijk is wat er werkelijk moeilijk is.`], ouder:['Je ziet wat je doet, maar niet altijd wat er vlak daarvoor bij jou gebeurt.',`Als je moe, boos of gestrest bent, reageer je sneller. Daardoor praat je harder, geef je toe of klap je dicht voordat je rustig hebt kunnen nadenken. Achteraf weet je vaak wel wat je liever had gedaan, maar in het moment neemt de spanning het over.`], angst:['Wat even rust geeft, kan de angst laten terugkomen.',`Weggaan, veel geruststelling krijgen of iets overnemen voelt op dat moment fijn. Maar ${childLabel} merkt dan niet dat de spanning ook weer kan zakken. Daardoor voelt dezelfde situatie de volgende keer opnieuw groot en blijft vermijden aantrekkelijk.`], scherm:['De strijd begint vaak bij het stoppen en iets anders gaan doen.',`${childFirstName} zit nog helemaal in het scherm en moet ineens omschakelen. Daardoor kan protest ontstaan, ook als de afspraak duidelijk was. Als stoppen telkens uitloopt op extra waarschuwingen of onderhandelen, begint het volgende stopmoment al snel met dezelfde spanning.`], slapen:['Bedtijd vraagt stoppen, loslaten en rustig worden.',`Dat is aan het einde van een lange dag extra moeilijk. Uitstellen, roepen of uit bed komen laat vooral zien dat die overgang nog niet goed lukt. Omdat iedereen moe is, ontstaat gemakkelijk dezelfde onrust als de avond ervoor.`], puber:['Achter de discussie zit vaak de wens om zelf te mogen beslissen.',`Je puber wil meer vrijheid en wil voelen dat de eigen mening meetelt. Tegelijk lukt het nog niet altijd om alles te plannen of vooraf de gevolgen te overzien. Jij blijft verantwoordelijk, waardoor een gewone afspraak snel verandert in een discussie over wie er bepaalt.`], luisteren:['Niet reageren betekent niet meteen dat je kind niet wil luisteren.',`${childFirstName} moet je horen, begrijpen, stoppen met wat er gebeurt en daarna beginnen. Als één stukje niet lukt, lijkt het alsof er helemaal niet wordt geluisterd. Jij gaat dan meer herhalen of uitleggen, terwijl je kind juist nog meer woorden moet verwerken.`], gezin:['Een ruzie gaat vaak sneller dan kinderen kunnen nadenken.',`Ze moeten wachten, woorden vinden en rekening houden met elkaar. Als dat niet lukt, reageren ze sneller met afpakken, duwen of schreeuwen. Jij grijpt logisch genoeg direct in, maar ondertussen loopt de spanning bij iedereen verder op.`], boos:['Boosheid lijkt soms ineens te komen.',`Vaak liep er al iets op: iets lukte niet, veranderde of voelde oneerlijk. Je ziet vooral de grote reactie aan het einde. Als jullie allebei gespannen raken, lukt luisteren en nadenken steeds minder en komt hetzelfde moment gemakkelijk opnieuw terug.`] }[theme]||['Je ziet vooral wat er misgaat.',`Je ziet nog niet welk stukje voor ${childLabel} moeilijk is. Daardoor kan hetzelfde moment steeds terugkomen.`]; add(cycle,'h3',intro[0]); add(cycle,'p',intro[1]); renderCycleDiagram(cycle,practiceExample()); } function renderToleranceVisual(parent,type){ const isChild=type==='child'; const isShared=type==='shared'; const visual=add(parent,'div',null,`rio-tolerance-visual is-${type}`); visual.setAttribute('role','img'); visual.setAttribute('aria-label','Window of tolerance: boven te veel spanning, in het midden meer ruimte, onder te weinig ruimte.'); add(visual,'span',isShared?'window of tolerance':isChild?'bij je kind':'bij jou','rio-tolerance-label'); if(isShared){ const legend=add(visual,'div',null,'rio-tolerance-legend'); const childLegend=add(legend,'span'); add(childLegend,'i',null,'is-child'); childLegend.append(' je kind'); const parentLegend=add(legend,'span'); add(parentLegend,'i',null,'is-parent'); parentLegend.append(' jij'); } const meter=add(visual,'div',null,'rio-tolerance-meter'); const high=add(meter,'div',null,'rio-tolerance-band is-high'); add(high,'strong',isShared?'Boven je ruimte':'Te veel spanning'); add(high,'span',isShared?'vechten, vluchten, blokkeren':isChild?'boos, blokkeren, slaan of schreeuwen':'sneller reageren, harder praten, korter lontje'); const windowBand=add(meter,'div',null,'rio-tolerance-band is-window'); add(windowBand,'strong',isShared?'Binnen je ruimte':'Meer ruimte'); add(windowBand,'span',isShared?'voelen, denken, luisteren, kiezen':isChild?'luisteren, voelen, kiezen':'ademhalen, begrenzen, contact houden'); const low=add(meter,'div',null,'rio-tolerance-band is-low'); add(low,'strong',isShared?'Onder je ruimte':'Te weinig ruimte'); add(low,'span',isShared?'dichtklappen, weggaan, afhaken':isChild?'wegkruipen, niets meer zeggen, afhaken':'dichtklappen, opgeven, afstand nemen'); if(isShared){ add(meter,'span','kind','rio-tolerance-marker is-child'); add(meter,'span','jij','rio-tolerance-marker is-parent'); } else { add(meter,'span',isChild?'kind':'jij',`rio-tolerance-marker ${isChild?'is-child':'is-parent'}`); } add(visual,'p',isShared?`De eerste stap helpt om eerder te zien wanneer ${childLabel} en jij uit de middenzone raken.`:isChild?`De eerste stap helpt om eerder te zien wanneer ${childLabel} buiten die middenzone komt.`:'De route helpt jou om eerder steun en houvast te pakken, voordat je zelf buiten je ruimte schiet.'); } function renderCycleDiagram(parent,items){ const visual=add(parent,'div',null,'rio-cycle-diagram'); visual.setAttribute('role','img'); visual.setAttribute('aria-label','Drie inzichten: wat je ziet, wat eronder gebeurt en waarom oefenen nodig is.'); visual.insertAdjacentHTML('beforeend',''); items.forEach(([title,text],index)=>{ const node=add(visual,'div',null,`rio-cycle-node is-${index+1}`); add(node,'span',String(index+1)); add(node,'strong',title); add(node,'small',text); }); const center=add(visual,'div',null,'rio-cycle-center'); add(center,'strong','oefenen'); add(center,'span','maakt het stap voor stap makkelijker'); } function renderPhoneMock(parent,title,src,cls=''){ const phone=add(parent,'figure',null,`rio-single-phone ${cls}`); addImage(phone,src,title); add(phone,'figcaption',title); return phone; } function renderApp(parent){ const section=singleSection(parent,'rio-app-single rio-app-exact'); const head=add(section,'header',null,'rio-app-exact-head'); const heading=add(head,'h2',PRICING_VARIANT==='trial'?'Dit krijg je tijdens je 14-daagse proefperiode.':'Dit krijg je in de OpvoedApp.'); add(heading,'span','Eén app, alle hulp die je nodig hebt'); add(head,'p','Met jouw workshop zet je de eerste stap. Daarna helpt de OpvoedApp je verder oefenen, terugkijken en bijschaven, met alle kennis en begeleiding op één plek.'); const layout=add(section,'div',null,'rio-app-exact-layout'); const left=add(layout,'div',null,'rio-app-exact-column'); const phones=add(layout,'figure',null,'rio-app-exact-phones'); addImage(phones,RIO_APP_TWO_PHONES_MOCKUP,'De onderdelen van de OpvoedApp op twee telefoons'); const right=add(layout,'div',null,'rio-app-exact-column'); function appCard(parentNode,title,text,cls=''){ const card=add(parentNode,'article',null,`rio-app-exact-card${cls?' '+cls:''}`); add(card,'h3',title); add(card,'p',text); return card; } appCard(left,'Complete cursussen','Over onder andere boosheid, executieve functies, rust in huis, angst, weerbaarheid en pubers.'); appCard(left,'30+ Workshops','Voor concrete situaties zoals niet luisteren, grenzen stellen, driftbuien, slapen en schermtijd.','is-orange'); appCard(left,'ExpertChat','Stel je eigen vraag aan een professional en krijg persoonlijk advies.'); appCard(left,'Downloads & tools','Werkbladen, scripts, voorbeeldzinnen, stappenplannen, gidsen en handige lijsten.','is-orange'); appCard(right,'ADHD-bibliotheek','60+ lessen over ADHD, concentratie, executieve functies, emoties en neurodivergente breinen.','is-orange'); appCard(right,'Doelencoach','Kies één concreet doel en werk in kleine stappen aan wat je wilt veranderen.'); appCard(right,'AI-coach','Direct hulp wanneer je ergens tegenaan loopt, getraind op onze eigen methode en ervaring.','is-pink'); appCard(right,'Live coaching & opnames','Sluit aan bij live momenten of kijk een opname terug wanneer dat beter uitkomt.','is-green'); const bottom=add(section,'div',null,'rio-app-exact-bottom'); appCard(bottom,'Meditaties','Meer rust voor jou en je kind rondom slapen, spanning en emoties.','is-green'); appCard(bottom,'Community','Herkenning van andere ouders en ruimte om ervaringen en vragen te delen.','is-pink'); appCard(bottom,'Steeds opnieuw te gebruiken','Begin bij wat er nu speelt en pak later een ander onderwerp erbij.'); } function renderProof(parent){ const section=singleSection(parent,'rio-proof-single'); const intro=add(section,'div',null,'rio-proof-intro-row'); const copy=add(intro,'div',null,'rio-proof-copy'); add(copy,'h2','Kennis uit onderzoek, ervaring uit de praktijk.'); add(copy,'p','Ons team bestaat uit een psycholoog en gedragswetenschapper, specialistische ambulante hulpverleners en professionals met ervaring in de jeugdhulp, jeugd-GGZ en diagnostiek. We werken met gezinnen thuis, op scholen en binnen de hulpverlening. We kennen de theorie én de praktijk, en zijn zelf ook moeder. Achter deze route staan dus echte mensen met vakkennis en jarenlange ervaring.'); const group=add(intro,'figure',null,'rio-proof-group'); addImage(group,RIO_IMAGES.proof,'Professionals van Rust in Ouderschap'); const descriptions={ Rosalie:'Rosalie heeft ruim twintig jaar ervaring als psycholoog en gedragswetenschapper. Binnen de specialistische jeugdzorg werkte zij met diagnostiek, ontwikkeling, gedrag en complexe opvoedvragen.', Celia:'Celia begon als pedagogisch medewerker in de specialistische jeugdzorg en groeide door tot ambulant hulpverlener en gebiedsmanager. Zij begeleidde zowel gezinnen als professionals.', Corine:'Corine begeleidde jarenlang kinderen, ouders en leerkrachten binnen de specialistische jeugdzorg. Als ambulant hulpverlener werkt zij met gedrag en opvoedvragen.', Trisha:'Trisha heeft negen jaar ervaring in de hulpverlening. Zij ondersteunt ouders vanuit haar achtergrond binnen de specialistische jeugd-GGZ.', Sifra:'Sifra werkt vanuit jarenlange ervaring in de jeugdhulpverlening en specialistische GGZ en begeleidt gezinnen en stellen.' }; const pros=add(section,'div',null,'rio-pro-list'); expertTeam.forEach(([name,role,photo])=>{ const card=add(pros,'article',null,'rio-pro-card'); addImage(card,photo,name); const proCopy=add(card,'div'); add(proCopy,'strong',name); add(proCopy,'span',role); add(proCopy,'p',descriptions[name]||'Deze professional denkt mee vanuit kennis en praktijkervaring.','rio-professional-description'); }); const stats=add(section,'div',null,'rio-proof-stats'); [['65.500+','ouders geholpen',''],['★★★★★','gemiddeld vijf sterren',''],['20+ jaar','ervaring in zorg en begeleiding','']].forEach(([big,small,overline])=>{ const stat=add(stats,'article',null,'rio-proof-stat'); if(overline)add(stat,'small',overline,'rio-proof-stat-overline'); add(stat,'strong',big); add(stat,'span',small); }); } function renderReviews(parent){ const section=singleSection(parent,'rio-reviews-single'); add(section,'h2','Wat andere ouders merkten toen ze met de OpvoedApp aan de slag gingen.'); reviews.forEach(review=>{ const card=add(section,'article',null,'rio-google-review'); const top=add(card,'div',null,'rio-review-top'); const avatar=add(top,'span','', 'rio-review-avatar'); avatar.setAttribute('aria-hidden','true'); const who=add(top,'div'); add(who,'strong',review.name); add(who,'span',review.meta); const stars=add(card,'div',null,'rio-review-stars'); add(stars,'span','★★★★★'); add(stars,'small',review.date); add(card,'p',review.text); }); } function renderIncluded(parent){ const section=singleSection(parent,'rio-included-single'); add(section,'h2','En dit krijg je er allemaal bij'); add(section,'p','Je begint met die ene workshop. De rest staat vanaf dag 1 open, voor wanneer je eraan toe bent.'); const list=add(section,'div',null,'rio-included-list'); valueStack.forEach(([title,text])=>{ const row=add(list,'article',null,'rio-included-row'); add(row,'strong',title); add(row,'span',text); }); } function renderPricing(parent){ const section=singleSection(parent,'rio-price-single'); section.id='rio-betaalblok'; section.classList.add(`rio-price-${PRICING_VARIANT}`); if('IntersectionObserver' in window){ const observer=new IntersectionObserver(entries=>{if(!entries.some(entry=>entry.isIntersecting))return;trackAnalytics('payment_viewed',{step_id:'payment',metadata:{device:analyticsDevice(),pricing_variant:PRICING_VARIANT}});observer.disconnect();},{threshold:.35}); observer.observe(section); } if(PRICING_VARIANT==='trial'){ add(section,'h2','Start je 14-daagse proefperiode.'); const plans=add(section,'div',null,'rio-plan-list rio-trial-plan-list'); const offer=add(plans,'article',null,'rio-plan-card rio-plan-row rio-trial-row is-selected'); add(offer,'span','14 DAGEN PROBEREN','rio-plan-badge'); const body=add(offer,'div',null,'rio-plan-row-body'); add(body,'span','',`rio-plan-radio is-selected`); const copy=add(body,'div',null,'rio-plan-row-copy'); add(copy,'strong','14 dagen proefperiode'); add(copy,'span','Volledige toegang tot de OpvoedApp'); const price=add(body,'div',null,'rio-plan-row-price'); add(price,'strong','€4,95'); add(price,'span','voor 14 dagen'); const cta=add(section,TRIAL_CHECKOUT_URL?'a':'button','Start mijn 14-daagse proefperiode','rio-route-button rio-pricing-main-cta rio-trial-main-cta'); cta.setAttribute('data-rio-click-id','proefperiode_start'); if(TRIAL_CHECKOUT_URL){ cta.href=TRIAL_CHECKOUT_URL; cta.target='_blank'; cta.rel='noopener'; cta.setAttribute('data-rio-checkout-link','true'); cta.setAttribute('data-rio-fixed-checkout','true'); cta.setAttribute('data-rio-plan','proefperiode_14_dagen_495'); }else{ cta.type='button'; cta.disabled=true; cta.setAttribute('aria-label','Start mijn 14-daagse proefperiode — preview'); } const perks=add(section,'ul',null,'rio-pricing-perks rio-trial-perks'); ['14 dagen toegang tot de hele OpvoedApp.','Direct aan de slag met jouw route, workshops en begeleiding.','Daarna €29,95 per maand.','Geen opzegtermijn. Opzeggen kan met één klik.'].forEach(text=>addCheck(perks,text)); return; } add(section,'h2','Start vandaag met de OpvoedApp.'); const plans=add(section,'div',null,'rio-plan-list'); const options=[ {key:'month',name:'Per maand',subtitle:'€29,95 nu, daarna elke maand',price:'€1,00',unit:'per dag',badge:'MEEST GEKOZEN OM TE STARTEN',url:CHECKOUT_URL_MONTH}, {key:'quarter',name:'Per 3 maanden',subtitle:'€69,95 nu, daarna elk kwartaal · dat is €23,32 per maand',price:'€0,78',unit:'per dag',badge:'',url:CHECKOUT_URL_QUARTER}, {key:'year',name:'Per jaar',subtitle:'€197 nu, daarna elk jaar · dat is €16,42 per maand',price:'€0,54',unit:'per dag',badge:'45% VOORDELIGER DAN PER MAAND',url:CHECKOUT_URL_YEAR} ]; options.forEach(option=>{ const plan=add(plans,'a',null,`rio-plan-card rio-plan-row${option.key!=='month'?' rio-plan-secondary':''}`); plan.href=option.url; plan.target='_blank'; plan.rel='noopener'; plan.setAttribute('aria-label',`${option.name}: ga naar de checkout`); if(option.badge)add(plan,'span',option.badge,'rio-plan-badge'); const body=add(plan,'div',null,'rio-plan-row-body'); add(body,'span','',`rio-plan-radio`); const copy=add(body,'div',null,'rio-plan-row-copy'); add(copy,'strong',option.name); add(copy,'span',option.subtitle); const day=add(body,'div',null,'rio-plan-row-price'); add(day,'strong',option.price); add(day,'span',option.unit); }); const revealPlans=add(section,'button','Liever per kwartaal of per jaar? Bekijk de opties','rio-plan-reveal'); revealPlans.type='button'; revealPlans.setAttribute('aria-expanded','false'); revealPlans.onclick=()=>{ const expanded=section.classList.toggle('rio-plans-expanded'); revealPlans.setAttribute('aria-expanded',String(expanded)); revealPlans.textContent=expanded?'Toon alleen de maandoptie':'Liever per kwartaal of per jaar? Bekijk de opties'; }; const perks=add(section,'ul',null,'rio-pricing-perks'); ['Geen opzegtermijn. Opzeggen kan met één klik.','Meteen toegang tot alles, ook tot wat niet in jouw advies staat.','Je krijgt een herinnering voordat een nieuwe periode ingaat.','De AI-coach is beschikbaar en inbegrepen zonder meerprijs.'].forEach(text=>addCheck(perks,text)); } function renderHopefulClose(parent){ const section=singleSection(parent,'rio-hopeful-close'); add(section,'h2','Je hoeft niet alles vandaag te kunnen. Eén ander moment kan al het begin zijn.'); add(section,'p',`Niet doordat jij harder je best doet, maar doordat je eerder ziet wat ${childLabel} en jij nodig hebben. Je begint klein, kijkt terug en krijgt hulp bij het bijschaven. Zo kan er stap voor stap meer rust en vertrouwen ontstaan.`); } function renderBottomBar(){ const bottom=add(box,'div',null,'rio-single-bottom'); const inner=add(bottom,'div',null,'rio-single-bottom-inner'); const copy=add(inner,'span',null,'rio-single-bottom-copy'); add(copy,'strong','Start vandaag'); add(copy,'small','met de hele OpvoedApp'); addPricingButton(inner,'Kies je plan','rio-single-bottom-button'); } function renderSingleRoutePage(){ if(routeStepHandler){window.removeEventListener('popstate',routeStepHandler);routeStepHandler=null;} $('rio-chat').classList.add('rio-toont-route'); renderSingleHeader(); const page=add(box,'main',null,'rio-single-route'); renderSituation(page); renderWhatHappens(page); renderCycleSection(page); renderWorkshop(page); renderProof(page); renderApp(page); renderReviews(page); renderPricing(page); syncCheckoutLinks(); } renderSingleRoutePage(); mount.appendChild(box); buttons([['Route opnieuw bekijken',()=>showRoute({route})],['Mijn antwoorden aanpassen',edit]]); requestAnimationFrame(()=>{ box.classList.add('rio-roadmap-in'); if(pop)pop.scrollTop=0; if(mount)mount.scrollTop=0; const top=Math.max(0,box.getBoundingClientRect().top+window.pageYOffset); window.scrollTo({top,behavior:'auto'}); }); return; } const topbar=add(box,'div',null,'rio-route-headbar'); const brand=add(topbar,'div',null,'rio-route-brand'); const brandLogo=add(brand,'img',null,'rio-route-logo'); brandLogo.src=RIO_LOGO_ICON; brandLogo.alt='OpvoedApp'; const intro=add(box,'header',null,'rio-routeintro'); const introInner=add(intro,'div',null,'rio-routeintro-inner'); const introCopy=add(introInner,'div',null,'rio-routeintro-copy'); add(introCopy,'span','Jouw persoonlijke route','rio-hero-eyebrow'); const routeTitle=add(introCopy,'h1',outcomeTitle(),'rio-route-title'); const mobileChildBar=add(introCopy,'div',`Jouw plan voor ${childLabel}`,'rio-mobile-childbar'); add(introCopy,'p',recognitionText(),'rio-route-recognition rio-route-lead'); add(introCopy,'p','Je route begint daarom bij eerder herkennen waar het kantelt. Niet bij harder je best doen. Daarna bouw je in kleine stappen verder, op een tempo dat thuis haalbaar blijft.','rio-routefocus'); const introMedia=add(introInner,'figure',null,'rio-route-heroimage'); addImage(introMedia,RIO_IMAGES.hero,'De OpvoedApp op laptop en telefoon'); add(introMedia,'figcaption','Persoonlijke route · alles op één plek'); const routeMapIntro=add(intro,'div',null,'rio-route-map-intro'); const routeMapCopy=add(routeMapIntro,'div'); add(routeMapCopy,'span','Jouw route','rio-section-kicker'); add(routeMapCopy,'h2','Jouw route'); add(routeMapCopy,'p','Klik op een stap om die te openen. Met de knoppen onderaan ga je rustig door naar de volgende stap.'); const routeWorkspace=add(intro,'div',null,'rio-route-workspace'); const sticky=add(routeWorkspace,'div',null,'rio-routesticky'); sticky.insertAdjacentHTML('beforeend',''); const nav=add(sticky,'ol',null,'rio-stepnav'); nav.setAttribute('aria-label','Stappen in jouw plan'); const navItems=[ {step:1,nr:'1',label:'Deze week',title:titleOf(firstLesson),detail:'Begin klein met het eerste onderdeel.'}, {step:2,nr:'2',label:'Week 2 tot 4',title:titleOf(secondLesson),detail:'Daarna verdiep je wat thuis helpt.'}, {step:3,icon:branchIcon,label:'Als je eraan toe bent',title:'Jij kiest',detail:'Alles staat open vanaf dag 1.'}, {step:4,icon:recoveryIcon,label:'Wanneer het nodig is',title:'ExpertChat of community',detail:'Voor bijsturen als het anders loopt.'} ]; const navButtons=new Map(); const mobileCards=new Map(); let activeRouteStep=1; navItems.forEach(({step,nr,icon,label,title,detail})=>{ const item=add(nav,'li',null,'rio-stepnav-item'); const button=add(item,'button',null,'rio-stepnav-button'); button.type='button'; button.dataset.step=String(step); button.setAttribute('aria-label',`${label}: ${title}`); const dot=add(button,'span',null,'rio-stepnav-dot'); if(icon)dot.innerHTML=icon;else dot.textContent=nr; const text=add(button,'span',null,'rio-stepnav-text'); add(text,'span',label,'rio-stepnav-label'); add(text,'strong',title,'rio-stepnav-title'); add(text,'span',detail,'rio-stepnav-detail'); add(button,'span','Bekijk stap','rio-stepnav-action'); button.onclick=()=>selectStep(step,true); button.onkeydown=e=>{ const current=Number(button.dataset.step); const next=e.key==='ArrowRight'?Math.min(4,current+1):e.key==='ArrowLeft'?Math.max(1,current-1):0; if(next){e.preventDefault();selectStep(next,true);navButtons.get(next)?.focus();} }; navButtons.set(step,button); }); const mobileList=add(sticky,'div',null,'rio-mobile-route-list'); mobileList.setAttribute('aria-label','Stappen in jouw plan'); navItems.forEach(({step,nr,icon,label,title,detail})=>{ const button=add(mobileList,'button',null,'rio-mobile-step-card'); button.type='button'; button.dataset.step=String(step); button.setAttribute('aria-label',`${label}: ${title}`); const dot=add(button,'span',null,'rio-mobile-step-dot'); if(icon)dot.innerHTML=icon;else dot.textContent=nr; const copy=add(button,'span',null,'rio-mobile-step-copy'); add(copy,'span',label,'rio-mobile-step-time'); add(copy,'strong',title,'rio-mobile-step-title'); add(copy,'span',detail,'rio-mobile-step-detail'); button.onclick=()=>selectStep(step,true); mobileCards.set(step,button); }); const mobileControls=add(sticky,'div',null,'rio-mobile-stepnav-controls'); const mobilePrevButton=add(mobileControls,'button','Vorige','rio-mobile-stepnav-arrow'); mobilePrevButton.type='button'; const mobileStepCount=add(mobileControls,'span','Stap 1 van 4','rio-mobile-stepnav-count'); const mobileNextButton=add(mobileControls,'button','Volgende','rio-mobile-stepnav-arrow'); mobileNextButton.type='button'; mobilePrevButton.onclick=()=>selectStep(Math.max(1,activeRouteStep-1),true); mobileNextButton.onclick=()=>selectStep(Math.min(4,activeRouteStep+1),true); const routeWaveProgress=sticky.querySelector('.rio-route-wave-progress'); function updateRouteWave(step){ if(!routeWaveProgress||typeof routeWaveProgress.getTotalLength!=='function')return; const total=routeWaveProgress.getTotalLength(); const fill=step===1 ? .14 : step===2 ? .42 : step===3 ? .69 : .94; routeWaveProgress.style.strokeDasharray=`${total} ${total}`; routeWaveProgress.style.strokeDashoffset=String(total*(1-fill)); } function addBlock(parent,title,text){ if(!text)return null; const block=add(parent,'div',null,'rio-contentblock'); add(block,'h4',title); add(block,'p',text); return block; } function addGains(parent,item){ const gains=gainsOf(item); if(!gains.length)return; const block=add(parent,'div',null,'rio-gainsblock'); const list=add(block,'ul',null,'rio-change-list'); gains.forEach(gain=>add(list,'li',gain)); } function renderAdvice(parent,item,options={}){ const advice=add(parent,'article',null,'rio-active-advice'); const media=add(advice,'div',null,'rio-active-media'); addImage(media,imageFor(item),titleOf(item),'rio-active-img'); add(media,'span',productMeta(item),'rio-active-media-badge'); const copy=add(advice,'div',null,'rio-active-copy'); add(copy,'p',options.label||'Begin hier','rio-mainlabel'); add(copy,'h3',titleOf(item)); add(copy,'p',productMeta(item),'rio-productmeta'); add(copy,'p',options.follow||descOf(item),'rio-mainintro'); if(options.includeFocus)addBlock(copy,'Waarom hiermee beginnen',focusForFirstStep()); addBlock(copy,'Wat je leert',learningOf(item)); const gains=gainsOf(item); if(gains.length){ const block=add(copy,'div',null,'rio-contentblock'); add(block,'h4','Wat er thuis verandert'); addGains(block,item); } if(options.smallSteps)renderSmallSteps(copy,true); if(options.today){ const today=add(copy,'div',null,'rio-todaybox'); add(today,'strong','Vandaag'); add(today,'span',cleanRouteText(item?.eerste_stap||item?.cta||'Bekijk het eerste onderdeel en kies één moment waarop je wilt oefenen.')); routeButton(today,CTA_LABEL); } } function renderSmallSteps(parent,inline=false){ const addon=add(parent,'section',null,'rio-weeksteps'+(inline?' rio-weeksteps-inline':'')); const plan=add(addon,'div',null,'rio-weekplan'); add(plan,'h3',inline?'Deze week doe je':'Drie kleine stappen voor deze week'); const stepGrid=add(plan,'ol',null,'rio-weekgrid'); const steps=[ ['Proberen','Ik oefen deze week één keer bij het moeilijke moment.'], ['Opmerken','Ik noteer één keer wat er vlak ervoor gebeurde.'], ['Verbinden',`Ik plan één kort rustig moment met ${childLabel}.`] ]; steps.forEach(([label,goal],i)=>{ const step=add(stepGrid,'li',null,'rio-weekcard'); add(step,'span',String(i+1).padStart(2,'0'),'rio-weeknr'); const copy=add(step,'div',null,'rio-weekcard-copy'); add(copy,'h4',label); add(copy,'p',goal); }); if(inline)return; const future=add(addon,'aside',null,'rio-weekfuture'); const reminders=add(future,'article',null,'rio-futurecard'); add(reminders,'span','Vanaf november','rio-futurelabel'); add(reminders,'h4','Seintje op jouw moment'); add(reminders,'p','En terug kunnen kijken hoe het vandaag ging.'); } function renderReminders(parent){ const reminders=(route.herinneringen||[]).slice(0,3); if(!reminders.length)return; const addon=add(parent,'section',null,'rio-reminderpanel'); add(addon,'h3','Seintjes op jouw momenten'); add(addon,'p','Korte herinneringen die je helpen oefenen, zonder dat je alles in je hoofd hoeft te houden.'); reminders.forEach(item=>{ const note=add(addon,'article',null,'rio-notification'); add(note,'span',cleanRouteText(item.tijd||'16:30'),'rio-notification-time'); const noteText=add(note,'p'); add(noteText,'strong',cleanRouteText(item.titel||'Even oefenen')); noteText.appendChild(document.createTextNode(cleanRouteText(item.tekst||''))); }); } function renderReflection(parent){ const addon=add(parent,'section',null,'rio-reflection'); add(addon,'h3','Even terugkijken'); add(addon,'p','Niet om te bepalen of het goed of fout ging, maar om te ontdekken wat werkte.'); const form=add(addon,'div',null,'rio-reflectionform'); add(form,'label','Hoe ging het vandaag?'); const rating=add(form,'div',null,'rio-rating'); for(let i=1;i<=5;i++){ const b=add(rating,'button',String(i)); b.type='button'; b.setAttribute('aria-pressed','false'); b.onclick=()=>{rating.querySelectorAll('button').forEach(x=>x.setAttribute('aria-pressed','false'));b.setAttribute('aria-pressed','true');}; } add(form,'label','Wat ging net anders dan vorige keer?'); const area=add(form,'textarea'); area.rows=4; area.placeholder='Schrijf één kleine observatie op.'; } function choiceReason(item,index){ const specific=descOf(item); if(specific&&!/eigen moment|algemene opvoedvraag|past bij wat er nu thuis speelt/i.test(specific))return specific; return cleanRouteText(dataOf(item).kiesDitAls||dataOf(item).watLeerJe||`Dit onderdeel sluit aan op stap ${index+1} van je plan.`); } function renderCompareCard(parent,item,index=0){ if(!item||!CATALOG[item.id])return; const card=add(parent,'article',null,'rio-compare-card'); card.classList.add('rio-card-'+String(item.id).replace(/[^a-z0-9_-]/gi,'-')); const thumb=add(card,'div',null,'rio-compare-thumb'); addImage(thumb,imageFor(item),titleOf(item)); add(card,'h4',titleOf(item)); add(card,'p',productMeta(item),'rio-productmeta'); add(card,'p',choiceReason(item,index)); } function renderFlowActions(parent,prevStep,nextStep){ const flow=add(parent,'div',null,'rio-flow-actions'); if(prevStep){ const prev=add(flow,'button','← Terug naar stap '+prevStep,'rio-flow-button'); prev.type='button'; prev.onclick=()=>selectStep(prevStep,true); }else add(flow,'span',''); if(nextStep){ const next=add(flow,'button',`Naar stap ${nextStep}: ${navItems[nextStep-1].title} →`,'rio-flow-button'); next.type='button'; next.onclick=()=>selectStep(nextStep,true); } } function renderMoreCue(parent){ const cue=add(parent,'button','Bekijk wat er nog meer in de OpvoedApp zit','rio-more-cue'); cue.type='button'; cue.onclick=()=>box.querySelector('.rio-route-static')?.scrollIntoView({behavior:'smooth',block:'start'}); } function renderGrowth(parent){return parent;} function renderParentCycle(parent){ const section=add(parent,'section',null,'rio-static-card rio-parent-cycle'); const copy=add(section,'div',null,'rio-parent-cycle-copy'); add(copy,'span','Je bent niet de enige','rio-section-kicker'); add(copy,'h3','Veel ouders voelen precies deze spanning'); add(copy,'p','Je probeert geduldig te blijven, blijft nadenken over wat je anders kunt doen en ondertussen vraagt het ouderschap gewoon door.'); add(copy,'p','Als je zelf voortdurend op scherp staat, wordt het steeds moeilijker om rustig te reageren op je kind. Niet omdat je het niet goed wilt doen, maar omdat jouw eigen systeem ook steun en houvast nodig heeft.'); const stat=add(copy,'div',null,'rio-parent-stat'); add(stat,'strong','40%'); add(stat,'span','van de ouders herkent aanhoudende stress- of uitputtingsklachten'); const visual=add(section,'figure',null,'rio-parent-cycle-image'); const parentCycleImg=addImage(visual,RIO_STRESS_IMAGE,'Ouder en kind aan tafel in een herkenbaar thuismoment'); parentCycleImg.onerror=()=>{visual.classList.add('rio-img-parent-broken');parentCycleImg.remove();}; const card=add(section,'aside',null,'rio-cycle-card'); add(card,'h4','De vicieuze cirkel'); add(card,'p','Waar je zo makkelijk in terechtkomt'); const list=add(card,'ol',null,'rio-cycle-list'); [ ['Je lontje wordt korter','Omdat je zelf moe, vol of overprikkeld bent.'], ['Je reageert feller dan je wilde','En achteraf baal je daarvan.'], ['Het schuldgevoel groeit','Waardoor je de volgende keer nog harder je best probeert te doen.'] ].forEach(([title,text],i)=>{ const row=add(list,'li'); add(row,'span',String(i+1),'rio-cycle-number'); const rowCopy=add(row,'span'); add(rowCopy,'strong',title); add(rowCopy,'small',text); }); const reminder=add(card,'div',null,'rio-cycle-reminder'); add(reminder,'strong','Strenger zijn voor jezelf werkt niet.'); add(reminder,'span','Je hebt geen hardere aanpak nodig, maar meer steun en houvast.'); } function renderPhone(parent,config){ const phone=add(parent,'article',null,'rio-app-phone '+config.className); add(phone,'span',null,'rio-phone-notch'); const screen=add(phone,'div',null,'rio-phone-screen'); add(screen,'span',config.kicker,'rio-phone-kicker'); add(screen,'h4',config.title); if(config.search)add(screen,'p',config.search,'rio-phone-search'); const chips=add(screen,'div',null,'rio-phone-chips'); config.chips.forEach(chip=>add(chips,'span',chip)); const card=add(screen,'div',null,'rio-phone-card'); if(config.image)addImage(card,config.image,config.title); const cardCopy=add(card,'span'); add(cardCopy,'strong',config.cardTitle); add(cardCopy,'small',config.cardText); const progress=add(screen,'div',null,'rio-phone-progress'); config.dots.forEach(active=>add(progress,'span',null,active?'rio-dot-active':'')); return phone; } function renderAppDifference(parent){ const section=add(parent,'section',null,'rio-static-card rio-app-difference'); const copy=add(section,'div',null,'rio-app-difference-copy'); add(copy,'span','Niet nóg meer informatie','rio-section-kicker'); add(copy,'h3','Daarom is de OpvoedApp anders'); add(copy,'p','Je hoeft niet eerst alles te begrijpen voordat je iets kunt veranderen. De OpvoedApp helpt je om kennis om te zetten naar kleine stappen die je thuis echt kunt gebruiken.'); const bullets=add(copy,'ul',null,'rio-app-bullets'); ['Direct toepasbaar in jouw situatie','Altijd binnen handbereik','Ontwikkeld vanuit echte opvoedvragen'].forEach(text=>{ const li=add(bullets,'li'); add(li,'span','✓'); add(li,'strong',text); }); const note=add(copy,'div',null,'rio-app-note'); add(note,'strong','Niet alleen weten wat helpt.'); add(note,'span','Maar het ook kunnen op het moment dat het spannend wordt.'); const phones=add(section,'div',null,'rio-phone-showcase'); [ {className:'rio-phone-left',kicker:'Ontdek',title:'Wat speelt thuis?',search:'Zoek op leeftijd of thema',chips:['Alles','4-8 jaar','8-12 jaar'],image:'https://www.rustinouderschap.nl/wp-content/uploads/2026/08/Workshops-home.jpg',cardTitle:'Workshop',cardText:'Een concreet thema per keer',dots:[true,true,false,false]}, {className:'rio-phone-main',kicker:'Jouw focus',title:`Vandaag voor ${childLabel}`,search:'Een kleine stap die past',chips:['Cursus','Audio','Werkblad','ExpertChat'],image:'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/mockup-persoonlijke-route.webp',cardTitle:'Persoonlijke route',cardText:'Begin klein en bouw verder',dots:[true,true,true,false,false]}, {className:'rio-phone-right',kicker:'Rust erbij',title:'Begeleide audio',search:'Voor ouder of kind',chips:['3 min','5 min','Voor jou'],image:'https://www.rustinouderschap.nl/wp-content/uploads/2026/09/mockup-meditaties.webp',cardTitle:'Even landen',cardText:'Rustiger verder na spanning',dots:[true,false,false,false]} ].forEach(phone=>renderPhone(phones,phone)); } const stage=add(routeWorkspace,'main',null,'rio-stage-panel'); stage.id='rioRouteStage'; stage.tabIndex=-1; function scrollStageIntoView(){ if(!pop){stage.scrollIntoView({behavior:'smooth',block:'start'});return;} const top=pop.scrollTop+stage.getBoundingClientRect().top-pop.getBoundingClientRect().top-18; pop.scrollTo({top:Math.max(0,top),behavior:'smooth'}); stage.focus({preventScroll:true}); } function stageHeading(title,text){ const head=add(stage,'div',null,'rio-stage-heading'); add(head,'h3',title); if(text)add(head,'p',text); } function renderStage(step,scrollStage=false){ stage.replaceChildren(); if(step===1){ renderAdvice(stage,firstLesson,{label:'Stap 1 · deze week',today:true,includeFocus:true,smallSteps:true}); renderFlowActions(stage,null,2); }else if(step===2){ stageHeading('Week 2 tot 4: verder bouwen','Als de eerste stap wat houvast geeft, verdiep je het onderwerp dat het meest bij jouw thuissituatie past.'); renderAdvice(stage,secondLesson,{label:'Week 2 tot 4',follow:descOf(secondLesson)}); renderFlowActions(stage,1,3); }else if(step===3){ stageHeading('Dit zit er vanaf dag 1 al in','Je hoeft dit niet nu te kiezen. Vanaf dag 1 staat alles open; je pakt het erbij wanneer je eraan toe bent.'); const grid=add(stage,'div',null,'rio-choice-grid'); const items=choiceItems.length?choiceItems:nextItems.slice(0,3); items.slice(0,3).forEach((item,i)=>renderCompareCard(grid,item,i)); renderFlowActions(stage,2,4); }else{ stageHeading('Wanneer het nodig is','Voor die twintig procent die bij jou nét anders gaat, kun je bijsturen met de ExpertChat, herkenning vinden in de community of even rust pakken met meditaties.'); const grid=add(stage,'div',null,'rio-support-grid'); supportItems.slice(0,2).forEach((item,i)=>renderCompareCard(grid,item,i)); renderCompareCard(grid,meditationSupport,2); renderFlowActions(stage,3,null); } if(scrollStage)requestAnimationFrame(scrollStageIntoView); } function renderStatic(){ const staticWrap=add(box,'div',null,'rio-route-static'); renderParentCycle(staticWrap); renderAppDifference(staticWrap); const proof=add(staticWrap,'section',null,'rio-static-card rio-proof'); const proofLead=add(proof,'div',null,'rio-proof-lead'); add(proofLead,'span','Waarom je dit kunt aannemen','rio-section-kicker'); add(proofLead,'h3','Meer dan losse opvoedtips. Een aanpak waarop je kunt bouwen.'); add(proofLead,'p','De inhoud komt niet uit losse tips, maar uit ervaring met ouders, kinderen en gezinnen. Kennis uit psychologie, gedragswetenschap, jeugdhulp, jeugd-GGZ en ambulante begeleiding wordt vertaald naar stappen die je thuis kunt gebruiken.'); const proTeam=add(proof,'div',null,'rio-professional-strip'); expertTeam.forEach(([name,role,img])=>{ const person=add(proTeam,'article',null,'rio-professional'); const photo=add(person,'figure',null,'rio-professional-photo'); addImage(photo,img,name); const personCopy=add(person,'span',null,'rio-professional-copy'); add(personCopy,'strong',name); add(personCopy,'span',role); }); const stats=add(proof,'div',null,'rio-proof-stats'); [['65.500','ouders gingen je voor'],['4,4 uit 5','gemiddelde waardering'],['20+ jaar','in gezinnen, jeugdzorg en jeugd-GGZ']].forEach(([big,small])=>{ const stat=add(stats,'article',null,'rio-proof-stat'); add(stat,'strong',big); add(stat,'span',small); }); const stress=add(proof,'aside',null,'rio-proof-note'); add(stress,'strong','Je bent niet de enige'); add(stress,'span','Veel ouders lopen door terwijl hun batterij eigenlijk al leeg is. Als je eigen systeem vol zit, heb je geen hardere aanpak nodig maar steun, herhaling en houvast.'); const reviewsSection=add(staticWrap,'section',null,'rio-static-card rio-reviews-section'); add(reviewsSection,'h3','Dit ervaren andere ouders over de OpvoedApp'); const reviewGrid=add(reviewsSection,'div',null,'rio-review-grid'); reviews.forEach(review=>{ const card=add(reviewGrid,'article',null,'rio-review-card'); const starline=add(card,'div',null,'rio-review-starsline'); add(starline,'span','★★★★★','rio-stars'); add(starline,'span',review.date,'rio-review-meta'); add(card,'p',review.text); const head=add(card,'div',null,'rio-review-head'); add(head,'span',review.initial,'rio-review-avatar'); const who=add(head,'span'); add(who,'strong',review.name,'rio-review-name'); add(who,'span',review.meta,'rio-review-meta'); }); const valueSection=add(staticWrap,'section',null,'rio-static-card rio-value-stack'); add(valueSection,'span','Alles in de OpvoedApp','rio-section-kicker'); add(valueSection,'h3','Vanaf dag 1 staat de hele app open'); add(valueSection,'p','Je start met jouw persoonlijke route, maar krijgt meteen toegang tot de rest. Zo hoef je niet opnieuw te zoeken als er later iets anders speelt.'); const valueGrid=add(valueSection,'div',null,'rio-value-grid'); valueStack.forEach(([title,text,img])=>{ const item=add(valueGrid,'article',null,'rio-value-item'); const thumb=add(item,'figure',null,'rio-value-thumb'); addImage(thumb,img,title); const copy=add(item,'span',null,'rio-value-copy'); const heading=add(copy,'strong',title); if(title==='De AI-coach')add(heading,'span','nu beschikbaar','rio-november-badge'); add(copy,'span',text); }); const routeFeedback=add(staticWrap,'section',null,'rio-static-card rio-route-feedback'); add(routeFeedback,'h3','Past dit bij jouw situatie?'); const feedbackButtons=add(routeFeedback,'div',null,'rio-feedback-buttons'); [['Ja','past'],['Niet echt','past_niet']].forEach(([label,value])=>{ const button=add(feedbackButtons,'button',label,'rio-antwoordknop'); button.type='button'; button.onclick=()=>{trackAnalytics('route_feedback',{step_id:'route_feedback',metadata:{oordeel:value}});feedbackButtons.replaceChildren(add(feedbackButtons,'span','Dank je, dit helpt ons de route te verbeteren.','rio-feedback-thanks'));}; }); add(routeFeedback,'small','Dit advies is geen diagnose en vervangt geen onderzoek. Maak je je zorgen? Bespreek het met je huisarts of de jeugdarts.'); const offer=add(staticWrap,'section',null,'rio-static-card rio-offer'); const offerTop=add(offer,'div',null,'rio-offer-top'); const offerCopy=add(offerTop,'div',null,'rio-offer-copy'); add(offerCopy,'span','Begin vandaag met stap 1','rio-offer-kicker'); add(offerCopy,'h3','Start met jouw route voor '+childLabel); const priceRow=add(offerCopy,'div',null,'rio-price-row'); add(priceRow,'div','€29,95','rio-offer-price'); add(priceRow,'span','per maand'); add(offerCopy,'p','Je start met toegang tot de OpvoedApp. Maandelijks opzegbaar, met alle cursussen, workshops, meditaties, community en ExpertChat bij elkaar.'); routeButton(offerCopy,CTA_LABEL); add(offerCopy,'p','iDEAL · Bancontact · creditcard','rio-payment-line'); const offerRoute=add(offerTop,'aside',null,'rio-offer-route'); add(offerRoute,'span','Dit staat voor je klaar','rio-offer-route-label'); const miniRoute=add(offerRoute,'ol',null,'rio-offer-mini-route'); navItems.forEach(({step,label,title})=>{ const li=add(miniRoute,'li'); add(li,'span',String(step),'rio-mini-dot'); const txt=add(li,'span'); add(txt,'small',label); add(txt,'strong',title); }); const faq=add(staticWrap,'section',null,'rio-static-card rio-faq'); add(faq,'h3','Veelgestelde vragen'); [ ['Wat kost het na die vijf dagen?','Na de eerste vijf dagen loopt het door voor €29,95 per maand. Dat is ongeveer een euro per dag.'], ['Kan ik zelf stoppen?','Ja. Je kunt maandelijks opzeggen en je krijgt een herinnering voordat de eerste maand ingaat.'], ['Moet ik alles doen wat in mijn route staat?','Nee. Begin met stap 1. De rest staat klaar voor later, zodat je niet alles tegelijk hoeft te doen.'], ['Werkt dit ook als er een diagnose is of onderzoek loopt?','Ja. De route gebruikt wat jij invult als context, zonder alles aan een diagnose op te hangen. Bij vragen kun je de ExpertChat gebruiken.'], ['Wat als mijn vraag hier niet in past?','Dan kun je terecht in de ExpertChat. Vanaf november helpt de AI-coach ook tussendoor terugkijken en bijsturen.'] ].forEach(([q,a],i)=>{ const d=add(faq,'details'); if(i===0)d.open=true; const summary=add(d,'summary'); add(summary,'span',q); add(summary,'span',null,'rio-faq-toggle'); add(d,'p',a); }); const repeat=add(staticWrap,'section',null,'rio-static-card rio-faq-repeat'); add(repeat,'h3','Klaar om klein te beginnen?'); routeButton(repeat,CTA_LABEL); add(repeat,'small','Geen opzegtermijn. Met één klik opzeggen in de app.'); const mobileCta=add(box,'div',null,'rio-mobile-cta'); const mobilePrice=add(mobileCta,'span'); mobilePrice.textContent='Start'; add(mobilePrice,'small','met de OpvoedApp'); routeButton(mobileCta,CTA_LABEL); if('IntersectionObserver' in window){ const observer=new IntersectionObserver(entries=>{ box.classList.toggle('rio-offer-visible',entries.some(entry=>entry.isIntersecting)); },{root:pop,threshold:.12}); observer.observe(offer); } } function stepFromUrl(){ const m=String(location.hash||'').match(/^#stap-([1-4])$/); return m?Number(m[1]):1; } function writeStepUrl(step,push){ const hash='#stap-'+step; if(location.hash===hash)return; const next=location.pathname+location.search+hash; if(push)history.pushState({rioRouteStep:step},'',next); else history.replaceState({rioRouteStep:step},'',next); } function updateRouteChrome(){ const scrollTop=pop?.scrollTop||0; const staticTop=box.querySelector('.rio-route-static')?.getBoundingClientRect().top||Infinity; box.classList.toggle('rio-route-scrolled',scrollTop>700&&staticTop1); } function selectStep(step,push){ const safe=Math.min(4,Math.max(1,Number(step)||1)); activeRouteStep=safe; trackAnalytics('route_step_viewed',{step_id:'route_'+safe,metadata:{step:safe}}); nav.style.setProperty('--rio-route-progress',safe===1?'12%':safe===2?'40%':safe===3?'67%':'84%'); mobileList.style.setProperty('--rio-mobile-progress',safe===1?'18%':safe===2?'43%':safe===3?'67%':'82%'); updateRouteWave(safe); navButtons.forEach((button,key)=>{ const active=key===safe; if(active)button.setAttribute('aria-current','step');else button.removeAttribute('aria-current'); const item=button.parentElement; item?.classList.toggle('rio-stepnav-active',active); item?.classList.toggle('rio-stepnav-current',active); item?.classList.toggle('rio-stepnav-past',keysafe+1); }); mobileCards.forEach((button,key)=>{ if(key===safe)button.setAttribute('aria-current','step');else button.removeAttribute('aria-current'); button.classList.toggle('rio-mobile-step-current',key===safe); button.classList.toggle('rio-mobile-step-past',keysafe+1); }); if(mobilePrevButton&&mobileNextButton&&mobileStepCount){ mobilePrevButton.disabled=safe===1; mobileNextButton.disabled=safe===4; mobileStepCount.textContent='Stap '+safe+' van 4'; } renderStage(safe,push); writeStepUrl(safe,push); updateRouteChrome(); } renderStatic(); mount.appendChild(box); if(routeStepHandler)window.removeEventListener('popstate',routeStepHandler); routeStepHandler=()=>{if(phase==='route')selectStep(stepFromUrl(),false);}; window.addEventListener('popstate',routeStepHandler); if(pop)pop.addEventListener('scroll',()=>{updateRouteChrome();trackScrollMilestones('route',pop.scrollTop+pop.clientHeight,pop.scrollHeight);},{passive:true}); selectStep(stepFromUrl(),false); buttons([['Route opnieuw bekijken',()=>showRoute({route})],['Mijn antwoorden aanpassen',edit]]); requestAnimationFrame(()=>{box.classList.add('rio-roadmap-in');updateRouteChrome();if(pop)pop.scrollTop=0;const rect=box.getBoundingClientRect(),routeTop=rect.top+window.scrollY;trackScrollMilestones('route',window.scrollY+window.innerHeight-routeTop,box.scrollHeight);}); } function reset(restart=true){if(restart&&analyticsSessionId)trackAnalytics('chat_reset');if(restart)try{sessionStorage.removeItem(SAVED_ROUTE_KEY);}catch{}errorBubble=null;closeRouteModal();generation++;clearTimeout(timer);clearTimeout(typeTimer);busy=false;state.answers={};state.idx=0;state.safety=null;phase='start';route=null;editId=null;customQuestion='';customChoices=null;currentStep=null;lastAnsweredStep=null;pendingReflectionCorrection=false;intakeRecords=[];intakePosition=-1;selectedChoice='';activeQuestionText='';activeChoices=[];if(restart)selectedStartTopic='';input.disabled=false;input.placeholder='Schrijf je antwoord…';composer.hidden=false;berichten.replaceChildren();antwoorden.replaceChildren();hoofd.value='';input.value='';testNote.value='';testNote.hidden=false;testFlow.querySelector('.rio-test-note-label').hidden=false;testContext.textContent='';testQuestion.textContent='';testChoices.replaceChildren();testError.textContent='';testNext.disabled=false;testNext.textContent='Volgende';resetStartHint();if(restart){analyticsSessionId='';$('rio-chat').classList.remove('rio-intake-active');assistent.classList.remove('rio-actief');pos=0;del=false;animate();}} document.getElementById('rio-chat').addEventListener('click',event=>{ const target=event.target.closest('a,button,[role="button"]'); if(target&&!target.closest('input,textarea')){ const checkout=target.matches('a[data-rio-checkout-link="true"],a[href*="betalen.rustinouderschap.nl/checkout/"]'); const clickId=checkout?'checkout':target.classList.contains('rio-antwoordknop')?'antwoordkeuze':target.classList.contains('rio-opnieuw')?'opnieuw':target.classList.contains('rio-chatknop')?'antwoord_versturen':target.classList.contains('rio-startknop')?'chat_starten':target.getAttribute('data-rio-click-id')||target.getAttribute('aria-label')||target.tagName.toLowerCase(); trackAnalytics('element_clicked',{step_id:phase,metadata:{click_id:cleanAiText(clickId).slice(0,80),element:target.tagName.toLowerCase(),device:analyticsDevice()}}); } const link=event.target.closest('a[data-rio-checkout-link="true"],a[href*="betalen.rustinouderschap.nl/checkout/"]'); if(!link)return; const href=link.href||''; const plan=link.dataset.rioPlan||(/opvoedap-j/.test(href)?'jaar':/opvoedap-k/.test(href)?'kwartaal':'maand'); trackAnalytics('checkout_clicked',{step_id:'checkout',metadata:{plan,url:href,label:cleanAiText(link.textContent),pricing_variant:PRICING_VARIANT}}); }); $('rioStartformulier').onsubmit=e=>{e.preventDefault();const text=hoofd.value.trim();if(text)start(text);else{$('rioTypewriter').style.display='none';clearTimeout(typeTimer);hoofd.focus();}}; testNext.onclick=()=>{ if(busy||phase!=='intake')return; const note=cleanAiText(testNote.value); const combined=selectedChoice&¬e?`${selectedChoice} — ${note}`:selectedChoice||note; answer(combined); }; testBack.onclick=()=>{ if(busy||phase!=='intake'||intakePosition<=0)return; intakePosition--; const record=intakeRecords[intakePosition]; currentStep=stepBank()[record.id]||{id:record.id,q:record.q,c:record.c}; renderStep(currentStep,record.q,record.c,{fromHistory:true}); trackAnalytics('question_back',{step_id:record.id,metadata:{device:analyticsDevice()}}); }; testNote.addEventListener('keydown',event=>{ if(event.key==='Enter'&&(event.metaKey||event.ctrlKey)){event.preventDefault();testNext.click();} }); testNote.addEventListener('input',()=>{testNext.disabled=!(selectedChoice||cleanAiText(testNote.value));}); composer.onsubmit=e=>{e.preventDefault();if(busy)return;if(phase==='edit_value')editValue(input.value);else if(phase==='reflectie')confirmReflection(input.value);else answer(input.value);}; for(const field of [hoofd,input])field.addEventListener('keydown',e=>{ if(e.key!=='Enter'||e.shiftKey||e.isComposing)return; e.preventDefault();if(busy||e.repeat)return; (field===hoofd?$('rioStartformulier'):composer).requestSubmit(); }); $('rioOpnieuw').onclick=()=>reset(); hoofd.onfocus=()=>{clearTimeout(typeTimer);$('rioTypewriter').style.display='none';}; hoofd.oninput=()=>{$('rioTypewriter').style.display='none';resetStartHint();}; hoofd.onblur=()=>{if(!hoofd.value)animate();}; document.querySelectorAll('#rio-chat [data-rio-start]').forEach(button=>{button.onclick=()=>{if(busy)return;clearTimeout(typeTimer);$('rioTypewriter').style.display='none';document.querySelectorAll('#rio-chat [data-rio-start]').forEach(item=>item.classList.toggle('is-selected',item===button));selectedStartTopic=cleanAiText(button.querySelector('strong')?.textContent||'');hoofd.value=button.getAttribute('data-rio-start')||'';resetStartHint();hoofd.focus();hoofd.setSelectionRange(hoofd.value.length,hoofd.value.length);};}); if(connection)document.querySelector('#rio-chat .rio-status').textContent='Persoonlijke intake'; animate(); const CATALOG = { "7daagse": { "titel": "De 7-daagse Minder Strijd", "soort": "Startpunt", "duur": "7 dagen · ±10 min per dag", "kiesDitAls": "Kies dit als boosheid, strijd, grenzen, niet luisteren, herhalen, dreigen of escalaties steeds terugkomen.", "watLeerJe": "Je leert in zeven dagen één terugkerend strijdpatroon eerder herkennen, rustiger begrenzen en concreet anders aanpakken.", "watVerandertThuis": [ "Je ziet het patroon eerder aankomen.", "Je hebt woorden klaar op het moment zelf.", "Je eindigt met een plan dat bij jou en je kind past." ], "inhoud": [ "Dag 1 - Zo voorkom je dat dezelfde strijd opnieuw ontstaat", "Dag 2 - Grenzen zonder straffen", "Dag 3 - Niet luisteren & triggers", "Dag 4 - Zelf rustig blijven", "Dag 5 - Driftbuien en escalaties", "Dag 6 - Voorbeeldzinnen", "Dag 7 - Persoonlijk plan" ] }, "startmodule": { "titel": "Startmodule", "soort": "Startpunt", "duur": "", "kiesDitAls": "De startmodule helpt nieuwe leden niet alles tegelijk te willen doen, maar te beginnen bij wat er nú speelt.", "watLeerJe": "Je leert de app gebruiken als praktische gereedschapskist: niet alles volgen, maar gericht pakken wat je op dat moment nodig hebt.", "watVerandertThuis": [], "inhoud": [ "Korte oriëntatie op de OpvoedApp en de verschillende soorten ondersteuning.", "Bepalen of je op dit moment vooral wilt leren, verdiepen, een persoonlijke vraag stellen of eerst tot rust komen.", "Een eerste logisch onderdeel kiezen: cursus, workshop, ADHD-bibliotheek, ExpertChat of meditatie.", "Werken vanuit één concrete thuissituatie in plaats van “de hele opvoeding” tegelijk willen veranderen." ] }, "cursus-minder-boos": { "titel": "Minder Boos, Meer Rust", "soort": "Cursus", "duur": "", "kiesDitAls": "Voor gezinnen waarin boosheid, strijd en escalaties steeds terugkomen.", "watLeerJe": "Je leert onder het zichtbare boze gedrag kijken en krijgt een aanpak waarmee je tegelijk duidelijk én regulerend kunt reageren.", "watVerandertThuis": [ "Je ziet sneller wanneer spanning oploopt en kunt eerder ingrijpen.", "Grenzen leiden minder vaak tot eindeloze discussie of escalatie.", "Na een uitbarsting lukt het makkelijker om contact en rust te herstellen." ], "inhoud": [ "Begrijpen wat boos gedrag betekent en welke spanning eraan voorafgaat.", "Escalaties eerder herkennen en leren waar je nog kunt bijsturen.", "Grenzen stellen zonder automatisch in een machtsstrijd te belanden.", "Waarom straffen vaak niet het gewenste effect heeft.", "Voorbeeldzinnen en reacties gebruiken wanneer emoties oplopen.", "Na een moeilijk moment herstellen en teruggaan naar verbinding." ] }, "cursus-rust-in-huis": { "titel": "Rust in Huis", "soort": "Cursus", "duur": "", "kiesDitAls": "Voor gezinnen die verlangen naar minder chaos, meer overzicht en een prettiger dagelijks ritme.", "watLeerJe": "Je leert het dagelijks gezinsleven zo inrichten dat routines duidelijker worden en gewone taken minder energie en strijd kosten.", "watVerandertThuis": [ "Minder honderd keer hoeven vragen.", "Meer voorspelbaarheid rond ochtend, eten, huiswerk en bedtijd.", "Meer ruimte voor contact en leuke momenten doordat minder energie naar chaos gaat." ], "inhoud": [ "Ochtend- en avondroutines vormgeven.", "Duidelijke en haalbare afspraken maken.", "Structuur en voorspelbaarheid vergroten.", "Emoties begeleiden tijdens drukke dagelijkse momenten.", "Meer samenwerking creëren in plaats van voortdurend corrigeren.", "Kinderen stap voor stap meer verantwoordelijkheid geven." ] }, "cursus-executieve-functies": { "titel": "Executieve Functies", "soort": "Cursus", "duur": "", "kiesDitAls": "Voor kinderen die weten wat er moet gebeuren, maar moeite hebben met beginnen, plannen, focussen of volhouden.", "watLeerJe": "Je leert herkennen welke uitvoeringsvaardigheid achter “niet luisteren”, vergeten of uitstellen kan zitten en hoe je je kind gericht ondersteunt zonder alles over te nemen.", "watVerandertThuis": [ "Minder frustratie over “hij weet het toch?”.", "Je kind krijgt meer overzicht en kan taken makkelijker starten en afronden.", "Ondersteuning verschuift stap voor stap naar meer zelfstandigheid en zelfvertrouwen." ], "inhoud": [ "Wat executieve functies zijn en waarom weten iets anders is dan uitvoeren.", "Taakinitiatie: op gang komen met wat moet.", "Plannen en organiseren.", "Werkgeheugen en onthouden wat er afgesproken is.", "Omgaan met afleiding en aandacht vasthouden.", "Doorzetten, schakelen en timemanagement.", "Visuele ondersteuning gebruiken om zelfstandigheid te vergroten." ] }, "cursus-angst-de-baas": { "titel": "Angst de Baas", "soort": "Cursus", "duur": "", "kiesDitAls": "Voor kinderen die snel bang zijn, veel piekeren, onzeker zijn of situaties vermijden.", "watLeerJe": "Je leert je kind ondersteunen bij angst zonder de angst over te nemen, weg te praten of onbedoeld groter te maken.", "watVerandertThuis": [ "Je kind durft stap voor stap meer aan.", "Piekeren en vermijden bepalen minder vaak wat wel en niet kan.", "Je kind ervaart vaker: “het was spannend, maar ik kon het aan.”" ], "inhoud": [ "Angst en piekergedachten begrijpen.", "Herkennen wanneer geruststellen of vermijden de angst juist groter kan houden.", "Ontspanning en regulatie inzetten.", "Werken aan helpende gedachten en mindset.", "Je kind moedig begeleiden zonder te forceren.", "Kleine stappen oefenen richting situaties die spannend zijn." ] }, "cursus-weerbaarheid": { "titel": "Weerbaarheidstraining", "soort": "Cursus", "duur": "", "kiesDitAls": "Gericht op kinderen van ongeveer 6 tot 12 jaar die steviger, zekerder en veerkrachtiger willen worden.", "watLeerJe": "Je kind leert voelen wat het wil en niet wil, dit duidelijker uitspreken en steviger blijven staan in sociale situaties.", "watVerandertThuis": [ "Meer zelfvertrouwen in contact met anderen.", "Grenzen worden duidelijker aangegeven.", "Voor jezelf opkomen voelt minder als ruzie maken en meer als stevig communiceren." ], "inhoud": [ "Grenzen herkennen en aangeven.", "Nee leren zeggen.", "Omgaan met kritiek en pesten.", "Emoties en stress leren hanteren.", "Positiever leren denken over jezelf.", "Zelfbeeld en zelfvertrouwen versterken.", "Voor jezelf opkomen zonder agressief te worden." ] }, "cursus-pittige-pubers": { "titel": "Pittige Pubers", "soort": "Cursus", "duur": "", "kiesDitAls": "Voor ouders die hun puber meer autonomie willen geven zonder de verbinding of grenzen kwijt te raken.", "watLeerJe": "Je leert ruimte geven waar dat kan en leiding nemen waar dat nodig is, zodat autonomie en verbinding naast elkaar kunnen bestaan.", "watVerandertThuis": [ "Minder gesprekken die automatisch in een machtsstrijd eindigen.", "Duidelijkere afspraken over vrijheid en verantwoordelijkheid.", "Meer contact, ook wanneer je puber het niet met je eens is." ], "inhoud": [ "Pubergedrag en ontwikkeling beter begrijpen.", "Communiceren zonder ieder gesprek te laten ontsporen.", "Grenzen stellen en afspraken maken.", "Autonomie en verantwoordelijkheid stap voor stap vergroten.", "Omgaan met emoties, stress en fel reageren.", "Contact houden terwijl je puber zelfstandiger wordt." ] }, "ws-vakantie-zonder-strijd": { "titel": "Zo kom je zonder strijd de vakantie door", "soort": "Workshop", "duur": "", "kiesDitAls": "Kies dit als vakantieperiodes, uitstapjes, bedtijd, schermtijd of meer samen thuis snel spanning geven.", "watLeerJe": "Je leert vakantiedagen voorspelbaarder maken zonder van de vakantie een strak schema te maken.", "watVerandertThuis": [], "inhoud": [ "Verwachtingen en routines aanpassen aan vakantieperiodes.", "Vooraf duidelijkheid creëren over schermtijd, bedtijd, uitstapjes en rustmomenten.", "Overgangen en teleurstellingen beter begeleiden.", "Spanning verminderen wanneer iedereen meer op elkaars lip zit." ] }, "ws-hechtingsstijl": { "titel": "De invloed van de hechtingsstijl van je kind", "soort": "Workshop", "duur": "Workshop · 80 min", "kiesDitAls": "Kies dit als gedrag samenhangt met nabijheid, claimen, terugtrekken, veiligheid of behoefte aan verbinding.", "watLeerJe": "Je leert gedrag beter plaatsen binnen de behoefte van je kind aan veiligheid en verbinding.", "watVerandertThuis": [], "inhoud": [ "Verschillende hechtingspatronen herkennen.", "Gedrag bekijken als signaal van behoefte aan nabijheid, veiligheid of ruimte.", "Begrijpen hoe jouw reactie en die van je kind elkaar beïnvloeden.", "Meer passend reageren op terugtrekken, claimen of spanning." ] }, "ws-executieve-functies": { "titel": "Executieve Functies", "soort": "Workshop", "duur": "Workshop · 120 min", "kiesDitAls": "Kies dit als je kind wel weet wat moet, maar moeite heeft met starten, plannen, onthouden, remmen of schakelen.", "watLeerJe": "Je leert welk stuk van het “doen” voor je kind lastig is en hoe je daarop gericht kunt ondersteunen.", "watVerandertThuis": [], "inhoud": [ "Basis van executieve functies.", "Waarom kinderen soms wel weten maar niet doen.", "Invloed op plannen, aandacht, remming en schakelen.", "Praktische ondersteuning voor thuis." ] }, "ws-kalm-blijven": { "titel": "Kalm blijven als het gedrag van je kind je triggert", "soort": "Workshop", "duur": "Workshop · 60 min", "kiesDitAls": "Kies dit als de ouder zelf merkt snel op te lopen, harder praat, schrikt van eigen reactie of rust wil bewaren.", "watLeerJe": "Je leert eerder merken wanneer jij zelf oploopt en creëert ruimte om anders te reageren dan vanuit irritatie of machteloosheid.", "watVerandertThuis": [], "inhoud": [ "Eigen triggers herkennen.", "Fysieke signalen van oplopende spanning opmerken.", "Automatische reacties vertragen.", "Regulatie vóór correctie.", "Rustig en duidelijk blijven zonder alles toe te staan." ] }, "ws-slapen": { "titel": "Slapen", "soort": "Workshop", "duur": "Workshop · 59 min", "kiesDitAls": "Kies dit als bedtijd, inslapen, doorslapen, uitstel of niet alleen willen slapen het moeilijke moment is.", "watLeerJe": "Je leert bedtijd zo begeleiden dat de overgang naar slapen minder strijd en spanning oproept.", "watVerandertThuis": [], "inhoud": [ "Wat slaap beïnvloedt bij kinderen.", "Rust rond bedtijd vergroten.", "Een voorspelbaar bedritueel opbouwen.", "Omgaan met uitstel, spanning en niet alleen willen slapen.", "Kijken naar prikkels en ontlading aan het einde van de dag." ] }, "ws-sterk-voelen": { "titel": "Kinderen die sterk voelen en sterk reageren", "soort": "Workshop", "duur": "Workshop · 50 min", "kiesDitAls": "Kies dit als emoties heel groot worden, je kind snel overspoeld raakt of midden in een uitbarsting niet bereikbaar is.", "watLeerJe": "Je leert heftige emoties niet alleen stoppen, maar begrijpen en begeleiden richting regulatie.", "watVerandertThuis": [], "inhoud": [ "Waarom emoties bij sommige kinderen heel groot binnenkomen.", "Overprikkeling en spanning herkennen.", "Co-regulatie tijdens heftige emoties.", "Wat wel en niet helpt midden in een uitbarsting.", "Herstel en leren ná het moment." ] }, "ws-emmertje": { "titel": "Het emmertje legen van je kind", "soort": "Workshop", "duur": "Workshop · 80 min", "kiesDitAls": "Kies dit als spanning zich door de dag opstapelt, je kind volloopt, thuis ontlaadt of kleine triggers de laatste druppel zijn.", "watLeerJe": "Je leert eerder zien wanneer je kind volloopt en helpt spanning zakken vóórdat alles eruit komt.", "watVerandertThuis": [], "inhoud": [ "Hoe spanning zich gedurende de dag opstapelt.", "Signalen van een volle emmer herkennen.", "Ontlading na school of drukke situaties begrijpen.", "Prikkelherstel en rustmomenten organiseren.", "Voorkomen dat kleine triggers de laatste druppel worden." ] }, "ws-executieve-functies-dagelijks": { "titel": "Executieve functies versterken in het dagelijks leven", "soort": "Workshop", "duur": "Workshop · 90 min", "kiesDitAls": "Kies dit als dagelijkse taken, routines of zelfstandigheid vastlopen door plannen, starten, volhouden of afronden.", "watLeerJe": "Je leert executieve functies oefenen binnen echte dagelijkse situaties, zonder van thuis een trainingsruimte te maken.", "watVerandertThuis": [], "inhoud": [ "Executieve vaardigheden vertalen naar gewone gezinsmomenten.", "Visuele steun, routines en externe structuur inzetten.", "Taken kleiner en concreter maken.", "Beginnen, volhouden en afronden ondersteunen.", "Hulp afbouwen wanneer vaardigheden groeien." ] }, "ws-vroegkinderlijk-trauma": { "titel": "Vroegkinderlijk trauma", "soort": "Workshop", "duur": "Workshop · 85 min", "kiesDitAls": "Kies dit alleen als eerdere stress, trauma, onveiligheid of beschermingsreacties letterlijk genoemd worden.", "watLeerJe": "Je leert bepaald gedrag beter begrijpen vanuit eerdere stress en veiligheid, en hier zorgvuldiger op aansluiten.", "watVerandertThuis": [], "inhoud": [ "Wat vroegkinderlijke stress en trauma kunnen doen met gedrag en regulatie.", "Veiligheid en voorspelbaarheid als basis.", "Triggers en beschermingsreacties herkennen.", "Gedrag benaderen vanuit het zenuwstelsel.", "Grenzen combineren met relationele veiligheid." ] }, "ws-puber-executieve-functies": { "titel": "Omgaan met je puber en executieve functies", "soort": "Workshop", "duur": "Workshop · 90 min", "kiesDitAls": "Kies dit bij pubers die moeite hebben met planning, school, tijd, afspraken, remmen of verantwoordelijkheid.", "watLeerJe": "Je leert onderscheid maken tussen onwil en nog onvoldoende ontwikkelde vaardigheden bij je puber.", "watVerandertThuis": [], "inhoud": [ "Waarom plannen en remmen in de puberteit nog volop in ontwikkeling zijn.", "School, huiswerk, tijd en afspraken begeleiden.", "Autonomie geven zonder je puber te laten verdrinken.", "Vermijden van eindeloze herinneringen en strijd." ] }, "ws-meer-invloed": { "titel": "Meer invloed krijgen op het gedrag van je kind", "soort": "Workshop", "duur": "Workshop · 86 min", "kiesDitAls": "Kies dit als ouders minder willen corrigeren en willen leren welke omgeving, timing en verwachtingen gedrag sturen.", "watLeerJe": "Je leert welke factoren jij wél kunt beïnvloeden, zodat veranderen niet afhankelijk wordt van harder praten of vaker corrigeren.", "watVerandertThuis": [], "inhoud": [ "Kijken naar wat gedrag in stand houdt.", "Invloed uitoefenen zonder controle te willen hebben over je kind.", "Timing, verbinding en duidelijke verwachtingen.", "Gedrag positief sturen via omgeving en vaardigheden." ] }, "ws-grenzen": { "titel": "Zo stel je grenzen en blijf je kalm tegelijkertijd", "soort": "Workshop", "duur": "Workshop · 110 min", "kiesDitAls": "Kies dit als nee zeggen, grenzen vasthouden, weerstand of boosheid na een grens steeds strijd geeft.", "watLeerJe": "Je leert grenzen stellen vanuit rust en duidelijkheid, ook als je kind daar boos of teleurgesteld op reageert.", "watVerandertThuis": [], "inhoud": [ "Wat een grens effectief maakt.", "Kalm leiderschap en duidelijke taal.", "Omgaan met weerstand na een nee.", "Niet vervallen in dreigen, straffen of eindeloos uitleggen.", "Grenzen vasthouden én contact houden." ] }, "ws-meeloopgedrag": { "titel": "Omgaan met meeloopgedrag en negatief gedrag", "soort": "Workshop", "duur": "Workshop · 65 min", "kiesDitAls": "Kies dit als groepsdruk, meelopen, verkeerde vrienden of negatief sociaal gedrag letterlijk speelt.", "watLeerJe": "Je leert je kind helpen een eigen positie in te nemen zonder alleen te waarschuwen voor “verkeerde vrienden”.", "watVerandertThuis": [], "inhoud": [ "Waarom kinderen meelopen met anderen.", "Sociale druk en behoefte om erbij te horen.", "Negatief gedrag bespreken zonder beschaming.", "Eigen keuzes en moreel kompas versterken.", "Oefenen met sociale weerbaarheid." ] }, "ws-opstandig": { "titel": "Omgaan met respectloos en opstandig gedrag", "soort": "Workshop", "duur": "Workshop · 100 min", "kiesDitAls": "Kies dit als grote mond, brutaal reageren, verzet of respectloos gedrag steeds escaleert.", "watLeerJe": "Je leert van strijd naar meer wederzijds respect bewegen zonder respectloos gedrag goed te praten.", "watVerandertThuis": [], "inhoud": [ "Wat er onder opstandig of brutaal gedrag kan zitten.", "Niet meegaan in escalatie.", "Duidelijk reageren zonder terugslaan met dezelfde toon.", "Grenzen, herstel en wederzijds respect." ] }, "ws-hsp-eigenwil": { "titel": "Hoogsensitief met een sterke eigen wil", "soort": "Workshop", "duur": "Workshop · 72 min", "kiesDitAls": "Kies dit als gevoeligheid, prikkelgevoeligheid, sterke eigen wil, verandering en onderhandelen samen spelen.", "watLeerJe": "Je leert rekening houden met gevoeligheid én stevig blijven in je ouderrol.", "watVerandertThuis": [], "inhoud": [ "Hoogsensitiviteit en prikkelgevoeligheid begrijpen.", "Sterke autonomie en weerstand plaatsen.", "Voorbereiden op veranderingen.", "Keuzes en grenzen bieden zonder eindeloos onderhandelen.", "Ontprikkelen en samenwerken." ] }, "ws-broer-zus": { "titel": "Verminder strijd tussen broers en zussen", "soort": "Workshop", "duur": "", "kiesDitAls": "Kies dit als ruzie, rivaliteit, pijn doen, uitschelden of strijd tussen broers en zussen het probleem is.", "watLeerJe": "Je leert ruzies begeleiden zonder elk conflict over te nemen en helpt kinderen meer conflictvaardigheden ontwikkelen.", "watVerandertThuis": [], "inhoud": [ "Waarom rivaliteit en botsingen tussen kinderen ontstaan.", "Niet voortdurend scheidsrechter hoeven zijn.", "Kinderen helpen conflicten stap voor stap zelf op te lossen.", "Grenzen rond pijn doen, uitschelden en eerlijkheid.", "Aandacht voor onderliggende behoefte aan plek en verbinding." ] }, "ws-zelfvertrouwen": { "titel": "Zelfvertrouwen versterken bij je kind", "soort": "Workshop", "duur": "Workshop · 60 min", "kiesDitAls": "Kies dit als onzekerheid, faalangst, negatief zelfbeeld, snel opgeven of weinig durven op de voorgrond staat.", "watLeerJe": "Je leert je kind ondersteunen om zelf vertrouwen op te bouwen in plaats van het alleen gerust te stellen.", "watVerandertThuis": [], "inhoud": [ "Hoe zelfvertrouwen ontstaat door ervaringen en oefenen.", "Omgaan met fouten en onzekerheid.", "Helpend complimenteren en bemoedigen.", "Autonomie en succeservaringen creëren.", "Negatief zelfbeeld niet onbedoeld bevestigen." ] }, "ws-gescheiden-samengesteld": { "titel": "Kinderen in gescheiden en/of samengestelde gezinnen", "soort": "Workshop", "duur": "Workshop · 60 min", "kiesDitAls": "Kies dit als scheiding, samengestelde gezinnen, loyaliteit of verschillende huizen/opvoedstijlen genoemd worden.", "watLeerJe": "Je leert je kind ondersteunen in een veranderde gezinssituatie zonder het tussen volwassenen in te laten komen.", "watVerandertThuis": [], "inhoud": [ "Wat veranderingen in gezinssamenstelling kunnen oproepen.", "Loyaliteit, verlies en aanpassing bij kinderen.", "Communicatie tussen volwassenen en richting het kind.", "Nieuwe rollen en grenzen in samengestelde gezinnen.", "Veiligheid en voorspelbaarheid bewaken." ] }, "ws-dagelijkse-struggles": { "titel": "Dagelijkse struggles makkelijker maken", "soort": "Workshop", "duur": "Workshop · 110 min", "kiesDitAls": "Kies dit als gewone terugkerende momenten zoals ochtend, eten, aankleden, opruimen of overgangen vaak strijd worden.", "watLeerJe": "Je leert gewone gezinsmomenten zo aanpassen dat ze minder vaak uitmonden in strijd.", "watVerandertThuis": [], "inhoud": [ "Terugkerende strijdmomenten analyseren.", "Overgangen, routines en verwachtingen vereenvoudigen.", "Minder herhalen, waarschuwen en onderhandelen.", "Duidelijke stappen en visuele steun.", "Eigen stress tijdens drukke momenten reguleren." ] }, "ws-communicatie": { "titel": "Hoe je communiceert maakt het verschil", "soort": "Workshop", "duur": "Workshop · 60 min", "kiesDitAls": "Kies dit als toon, timing, miscommunicatie, veel uitleggen of gesprekken die verharden centraal staan.", "watLeerJe": "Je leert zo communiceren dat de kans groter wordt dat je kind je boodschap kan ontvangen en dat gesprekken minder snel verharden.", "watVerandertThuis": [], "inhoud": [ "Invloed van toon, timing en woordkeuze.", "Korter en duidelijker communiceren.", "Luisteren naar wat er onder de reactie zit.", "Minder uitleggen tijdens hoge emotie.", "Verbinding herstellen na miscommunicatie." ] }, "ws-schermtijd": { "titel": "Omgaan met schermtijd zonder strijd", "soort": "Workshop", "duur": "Workshop · 60 min", "kiesDitAls": "Kies dit als schermtijd, telefoon, tablet, gamen of stoppen met schermen telkens strijd geeft.", "watLeerJe": "Je leert schermgrenzen voorspelbaarder maken en voorkomt dat iedere stop een nieuwe machtsstrijd wordt.", "watVerandertThuis": [], "inhoud": [ "Waarom stoppen met schermen zo moeilijk kan zijn.", "Afspraken vooraf in plaats van tijdens het conflict.", "Overgangen van scherm naar andere activiteit begeleiden.", "Grenzen vasthouden bij boosheid.", "Schermgebruik inbedden in het gezinsritme." ] }, "ws-huiswerk-motivatie": { "titel": "Hoe motiveer je je kind voor huiswerk en dagelijkse taken", "soort": "Workshop", "duur": "Workshop · 96 min", "kiesDitAls": "Kies dit als motivatie, huiswerk, dagelijkse taken, trekken, duwen, controleren of niet op gang komen speelt.", "watLeerJe": "Je leert je kind makkelijker op gang helpen en verantwoordelijkheid vergroten zonder dat jij de hele taak gaat dragen.", "watVerandertThuis": [], "inhoud": [ "Motivatie onderscheiden van taakinitiatie en overbelasting.", "Taken behapbaar maken.", "Beginhulp geven zonder alles over te nemen.", "Autonomie, keuze en succeservaringen benutten.", "Minder trekken, duwen en controleren." ] }, "ws-eten": { "titel": "Ontspannen en gezond eten met je kind", "soort": "Workshop", "duur": "Workshop · 90 min", "kiesDitAls": "Kies dit als eten, maaltijden, voorkeuren, weerstand of druk rond gezond eten spanning geeft.", "watLeerJe": "Je leert meer rust rond eten creëren en gezond gedrag ondersteunen zonder van iedere maaltijd een onderhandeling te maken.", "watVerandertThuis": [], "inhoud": [ "Spanning rond eten verminderen.", "Verantwoordelijkheid van ouder en kind onderscheiden.", "Structuur en voorspelbaarheid aan tafel.", "Omgaan met voorkeuren en weerstand.", "Een gezonde relatie met eten ondersteunen zonder druk." ] }, "ws-zindelijkheid": { "titel": "Zindelijkheid zonder stress", "soort": "Workshop", "duur": "Workshop · 80 min", "kiesDitAls": "Kies dit als zindelijkheid, ongelukjes, schaamte of spanning rond toilettraining speelt.", "watLeerJe": "Je leert zindelijkheid begeleiden met duidelijkheid en oefening, zonder druk of beschaming.", "watVerandertThuis": [], "inhoud": [ "Ontwikkeling en signalen van zindelijkheid.", "Tempo van het kind volgen zonder passief te worden.", "Ongelukjes zonder schaamte begeleiden.", "Routines en praktische ondersteuning.", "Wanneer spanning of strijd het proces belemmert." ] }, "ws-school-vastloopt": { "titel": "Hoe help je je kind als het vastloopt op school", "soort": "Workshop", "duur": "Workshop · 120 min", "kiesDitAls": "Kies dit als school zelf vastloopt, er zorgen zijn over leren, klas, overbelasting of samenwerking met school.", "watLeerJe": "Je leert beter achterhalen waar je kind op school vastloopt en gerichter samenwerken met school aan passende steun.", "watVerandertThuis": [], "inhoud": [ "Signalen van overbelasting of vastlopen herkennen.", "Kijken naar leren, executieve functies, emoties en prikkels.", "Gesprekken met school voorbereiden.", "Thuis ondersteunen zonder school volledig over te nemen.", "Sterktes en passende ondersteuning in beeld brengen." ] }, "ws-eft-tapping": { "titel": "EFT Tapping voor jou als ouder", "soort": "Workshop", "duur": "", "kiesDitAls": "Kies dit als de ouder een lichaamsgerichte oefening zoekt om eigen stress of spanning te verlagen.", "watLeerJe": "Je leert een praktische lichaamsgerichte oefening inzetten om je eigen spanning te helpen verlagen.", "watVerandertThuis": [], "inhoud": [ "Kennismaken met EFT/tapping als regulatie-oefening.", "Spanning in het lichaam opmerken.", "Een korte oefening gebruiken bij stress of overprikkeling.", "Ruimte creëren vóór je reageert." ] }, "ws-prikkels-buiten": { "titel": "Prikkels buiten jezelf houden", "soort": "Workshop", "duur": "Workshop · 80 min", "kiesDitAls": "Kies dit als de ouder zelf leegloopt, overprikkeld raakt of spanning uit de omgeving moeilijk buiten zichzelf houdt.", "watLeerJe": "Je leert beter omgaan met prikkels en spanning uit je omgeving zodat je minder snel leegloopt of overvraagd raakt.", "watVerandertThuis": [], "inhoud": [ "Eigen prikkelgevoeligheid en overbelasting herkennen.", "Onderscheiden wat van jou is en wat van de ander.", "Herstelmomenten inbouwen.", "Grenzen rond geluid, drukte en emotionele belasting.", "Reguleren zonder je volledig af te sluiten." ] }, "ws-hoogbegaafdheid-diagnoses": { "titel": "De invloed van hoogbegaafdheid en diagnoses op de ontwikkeling van je kind", "soort": "Workshop", "duur": "Workshop · 105 min", "kiesDitAls": "Kies dit als hoogbegaafdheid, diagnose, vermoeden of onderzoek letterlijk genoemd wordt en ontwikkeling gekleurd lijkt.", "watLeerJe": "Je leert genuanceerder kijken naar hoe hoogbegaafdheid en diagnoses de ontwikkeling en behoeften van je kind kunnen kleuren.", "watVerandertThuis": [], "inhoud": [ "Kijken naar ontwikkeling voorbij één label.", "Asynchrone ontwikkeling en hoge cognitieve mogelijkheden.", "Overlap en verschillen met andere diagnoses.", "Impact op gedrag, emoties, leren en zelfbeeld.", "Aansluiten bij behoefte zonder alles aan een diagnose toe te schrijven." ] }, "ws-zelfzorg": { "titel": "Zelfzorg voor ouders – geen luxe maar een noodzaak", "soort": "Workshop", "duur": "Workshop · 75 min", "kiesDitAls": "Kies dit als ouderbelasting, uitputting, schuldgevoel, te veel alleen dragen of eigen draagkracht centraal staat.", "watLeerJe": "Je leert zelfzorg zien als voorwaarde om beschikbaar en regulerend te kunnen blijven, niet als extra taak.", "watVerandertThuis": [], "inhoud": [ "Ouderbelasting en signalen van uitputting herkennen.", "Schuldgevoel rond rust en grenzen onderzoeken.", "Herstel en haalbare zelfzorg inbouwen.", "Eigen window of tolerance bewaken.", "Ondersteuning organiseren wanneer je te veel alleen draagt." ] }, "ws-opas-omas": { "titel": "Opa's en Oma's in de opvoeding", "soort": "Workshop", "duur": "Workshop · 105 min", "kiesDitAls": "Kies dit als grootouders, oppassen, familie-afspraken of verschillen tussen generaties spanning geven.", "watLeerJe": "Je leert generatieverschillen bespreekbaar maken en samenwerken rond het kind zonder strijd over wie het “goed” doet.", "watVerandertThuis": [], "inhoud": [ "Verschillen in opvoedstijl tussen generaties.", "Afspraken en grenzen rond oppassen en familie.", "Respectvol communiceren over wat ouders belangrijk vinden.", "Voorkomen dat kinderen tussen volwassenen terechtkomen.", "De kracht van grootouders benutten binnen duidelijke rollen." ] }, "adhd-begrijpen": { "titel": "Begrijpen van ADHD", "soort": "ADHD-bibliotheek", "duur": "", "kiesDitAls": "Kies dit alleen bij expliciete ADHD-diagnose, ADD-diagnose of concreet ADHD-vermoeden in de antwoorden.", "watLeerJe": "Je legt een basis waardoor gedrag minder snel als onwil wordt gezien en je beter begrijpt wat ADHD voor jouw kind betekent.", "watVerandertThuis": [], "inhoud": [ "Wat ADHD is en hoe het brein en zenuwstelsel kunnen functioneren.", "Verschillende vormen en kenmerken.", "ADHD bij meisjes en jongens.", "Erfelijkheid en ontwikkeling.", "Overlap met autisme, angst en leerproblemen." ] }, "adhd-ef": { "titel": "Executieve functies", "soort": "ADHD-bibliotheek", "duur": "", "kiesDitAls": "Kies dit alleen bij expliciete ADHD-diagnose, ADD-diagnose of concreet ADHD-vermoeden in de antwoorden.", "watLeerJe": "Je leert waarom “weten” en “doen” uiteen kunnen lopen en welke ondersteuning helpt om vaardigheden op te bouwen.", "watVerandertThuis": [], "inhoud": [ "Inhibitie en impulsremming.", "Werkgeheugen.", "Taakinitiatie.", "Planning en organisatie.", "Emotieregulatie.", "Timemanagement.", "Flexibiliteit en schakelen." ] }, "adhd-emoties": { "titel": "Emoties & gedrag", "soort": "ADHD-bibliotheek", "duur": "", "kiesDitAls": "Kies dit alleen bij expliciete ADHD-diagnose, ADD-diagnose of concreet ADHD-vermoeden in de antwoorden.", "watLeerJe": "Je leert grote emoties beter begrijpen en begeleiden zonder ze te bagatelliseren of door gedrag te laten regeren.", "watVerandertThuis": [], "inhoud": [ "Driftbuien en frustratie.", "Overprikkeling.", "Impulsief gedrag.", "Perfectionisme en faalangst.", "Schaamte, schuldgevoel en zelfbeeld.", "Angstklachten en RSD." ] }, "adhd-thuis": { "titel": "Thuis & opvoeden", "soort": "ADHD-bibliotheek", "duur": "", "kiesDitAls": "Kies dit alleen bij expliciete ADHD-diagnose, ADD-diagnose of concreet ADHD-vermoeden in de antwoorden.", "watLeerJe": "Je leert het dagelijkse gezinsleven voorspelbaarder maken en je verwachtingen beter afstemmen op wat je kind kan.", "watVerandertThuis": [], "inhoud": [ "Ochtend, eten, opruimen en bedtijd.", "ADHD-vriendelijke routines.", "Grenzen stellen zonder steeds in strijd te raken.", "Positieve communicatie.", "Niet willen versus niet kunnen.", "Slaap, broers en zussen en ouderstress." ] }, "adhd-school": { "titel": "School & leren", "soort": "ADHD-bibliotheek", "duur": "", "kiesDitAls": "Kies dit alleen bij expliciete ADHD-diagnose, ADD-diagnose of concreet ADHD-vermoeden in de antwoorden.", "watLeerJe": "Je leert gerichter kijken naar waarom school vastloopt en hoe thuis en school samen kunnen ondersteunen.", "watVerandertThuis": [], "inhoud": [ "Aandacht en focus.", "Geheugen en prikkelverwerking.", "Huiswerk en taakstart.", "Gesprekken met school.", "Ondersteuning in de klas.", "ADHD-vriendelijke leerstrategieën.", "Overgangen naar een nieuwe schoolfase." ] }, "adhd-diagnostiek": { "titel": "Diagnostiek & begeleiding", "soort": "ADHD-bibliotheek", "duur": "", "kiesDitAls": "Kies dit alleen bij expliciete ADHD-diagnose, ADD-diagnose of concreet ADHD-vermoeden in de antwoorden.", "watLeerJe": "Je leert de belangrijkste routes en keuzes rond diagnostiek en begeleiding begrijpen zodat je beter geïnformeerde beslissingen kunt nemen.", "watVerandertThuis": [], "inhoud": [ "Hoe een ADHD-onderzoek werkt.", "De diagnose bespreken met je kind.", "Medicatie en mogelijke bijwerkingen.", "Niet-medicamenteuze behandeling.", "Behandeling volgen en evalueren." ] }, "adhd-sociaal": { "titel": "Sociale ontwikkeling", "soort": "ADHD-bibliotheek", "duur": "", "kiesDitAls": "Kies dit alleen bij expliciete ADHD-diagnose, ADD-diagnose of concreet ADHD-vermoeden in de antwoorden.", "watLeerJe": "Je leert sociale problemen minder oppervlakkig bekijken en je kind gerichter helpen in groepssituaties en vriendschappen.", "watVerandertThuis": [], "inhoud": [ "Vriendschappen en erbij horen.", "Sociale misverstanden.", "Impulsiviteit in groepen.", "Pesten.", "Sociale vaardigheden.", "Emoties reguleren in contact met anderen." ] }, "adhd-zelfbeeld": { "titel": "Zelfbeeld, autonomie & talenten", "soort": "ADHD-bibliotheek", "duur": "", "kiesDitAls": "Kies dit alleen bij expliciete ADHD-diagnose, ADD-diagnose of concreet ADHD-vermoeden in de antwoorden.", "watLeerJe": "Je leert niet alleen kijken naar wat lastig is, maar ook actief bouwen aan competentie, autonomie en een positief zelfbeeld.", "watVerandertThuis": [], "inhoud": [ "Zelfvertrouwen versterken.", "Fouten leren accepteren.", "Talenten van het ADHD-brein herkennen.", "Verantwoordelijkheid vergroten.", "Meer loslaten zonder je kind te overvragen." ] }, "adhd-tools": { "titel": "Praktische tools voor ouders", "soort": "ADHD-bibliotheek", "duur": "", "kiesDitAls": "Kies dit alleen bij expliciete ADHD-diagnose, ADD-diagnose of concreet ADHD-vermoeden in de antwoorden.", "watLeerJe": "Je vertaalt inzicht naar concrete hulpmiddelen die het thuis makkelijker maken.", "watVerandertThuis": [], "inhoud": [ "Visuele ondersteuning en planners.", "Wekkers en timers.", "Routines en overgangshulp.", "Afspraken concreter maken.", "Technologie en schermtijd.", "Prikkels.", "Ochtend- en avondroutines." ] }, "adhd-zelfzorg": { "titel": "Ouderschap & zelfzorg", "soort": "ADHD-bibliotheek", "duur": "", "kiesDitAls": "Kies dit alleen bij expliciete ADHD-diagnose, ADD-diagnose of concreet ADHD-vermoeden in de antwoorden.", "watLeerJe": "Je leert ook voor jouw eigen regulatie en draagkracht zorgen, omdat ondersteuning van je kind niet losstaat van hoe het met jou gaat.", "watVerandertThuis": [], "inhoud": [ "Schuldgevoel en zorgen.", "Eigen triggers.", "Rust vinden in een intensief gezinsleven.", "Voorkomen dat je jezelf voorbijloopt.", "Steun organiseren om je heen." ] }, "expertchat": { "titel": "ExpertChat", "soort": "Als het vastloopt", "duur": "", "kiesDitAls": "Kies dit als algemene uitleg net niet genoeg is of een professional moet meekijken met deze specifieke situatie.", "watLeerJe": "Je leert algemene kennis vertalen naar jouw eigen gezin en krijgt hulp bij de vraag: “ja, maar hoe doe ik dit bij míjn kind?”", "watVerandertThuis": [], "inhoud": [ "Je beschrijft wat er speelt, wanneer het gebeurt en waar je op vastloopt.", "Een professional kijkt naar kind, gezin en context.", "Er wordt meegedacht over mogelijke onderliggende oorzaken en behoeften.", "Je krijgt concrete handvatten voor een volgende stap thuis.", "Ook vragen rond diagnoses, onderzoeken en complexere situaties kunnen worden besproken." ] }, "community": { "titel": "Community", "soort": "Als het vastloopt", "duur": "", "kiesDitAls": "Kies dit als herkenning, ervaringen van andere ouders of steun naast de route helpend kan zijn.", "watLeerJe": "Je ontdekt dat veel opvoedsituaties niet uniek voor jouw gezin zijn en kunt leren van hoe andere ouders ermee omgaan.", "watVerandertThuis": [], "inhoud": [ "Leeftijdsruimtes en thematische gesprekken.", "Ervaringen delen zonder dat iedere vraag meteen een behandelvraag hoeft te worden.", "Herkenning vinden bij ouders die vergelijkbare situaties meemaken.", "Trotsmomenten, dilemma’s en praktische uitwisseling." ] }, "meditaties": { "titel": "Meditaties voor ouder & kind", "soort": "Voor jou", "duur": "", "kiesDitAls": "Kies dit als ouder of kind eerst lichamelijke rust, ontprikkeling of ontspanning nodig heeft; altijd buiten de route.", "watLeerJe": "Je oefent niet alleen wát je anders wilt doen, maar helpt jezelf of je kind ook de lichamelijke rust vinden om dat daadwerkelijk te kunnen.", "watVerandertThuis": [], "inhoud": [ "Korte oefeningen voor ouderlijke stress en oplopende triggers.", "Rust en loslaten wanneer je hoofd blijft doorgaan.", "Ontprikkelen na een drukke dag.", "Oefeningen voor boosheid en grote emoties.", "Slaapmeditaties.", "Oefeningen rond zelfvertrouwen en aandacht voor het lichaam.", "Ademhaling, bodyscan, visualisatie en geleide verbeelding." ] }, "coaching-calls": { "titel": "Coaching Calls & live sessies", "soort": "Als het vastloopt", "duur": "", "kiesDitAls": "Kies dit als live verdieping, voorbeelden en vragen koppelen aan thuis helpend is.", "watLeerJe": "Je leert theorie omzetten in concrete keuzes voor de komende dagen en kunt vragen direct koppelen aan je eigen situatie.", "watVerandertThuis": [], "inhoud": [ "Meeluisteren met herkenbare opvoedsituaties.", "Vragen stellen en voorbeelden vertalen naar thuis.", "Kleine focuspunten kiezen om direct uit te proberen.", "Opnames terugkijken wanneer live aansluiten niet lukt." ] }, "scripts": { "titel": "Praktische tools, scripts & werkbladen", "soort": "Hulpmiddel", "duur": "", "kiesDitAls": "Kies dit als voorbeeldzinnen, checklists, planners of werkbladen de stap naar toepassen kleiner maken.", "watLeerJe": "Je krijgt concrete hulpmiddelen die de stap van “ik snap het” naar “ik kan het thuis toepassen” kleiner maken.", "watVerandertThuis": [], "inhoud": [ "Voorbeeldzinnen voor lastige momenten.", "Stappenplannen en checklists.", "Werkboeken bij cursussen en challenges.", "Visuele ondersteuning, routines en planners.", "Reflectiebladen en persoonlijke plannen." ] } }; const PLAN_ROUTES=[{"key":"age_0_2_boze_buien","age":"0-2","theme":"Je kind heeft boze buien / raakt snel overstuur","title":"De bui komt sneller dan jij kunt schakelen.","insight":"Je ziet het aankomen, maar stoppen lukt niet – en achteraf blijft vooral hangen dat jij ook je geduld verloor. Een bui begint zelden bij het moment zelf: de spanning liep al minuten eerder op.","main":"ws-sterk-voelen","also":["ws-kalm-blijven","ws-zelfzorg"],"promise":"In de eerste 30 minuten: Je herkent de drie signalen die aan een bui voorafgaan en weet wat je in die eerste minuten doet.","week":"Binnen een paar dagen zie je buien eerder aankomen en duren ze korter, omdat je niet meer hoeft te improviseren.","cta":"Bekijk vandaag nog wat je bij de volgende bui doet"},{"key":"age_0_2_niet_slapen","age":"0-2","theme":"Je kind wil niet (zelf) slapen","title":"Bedtijd is precies het moment waarop jouw dag zou moeten stoppen.","insight":"Je kind blijft onrustig of heeft jou steeds opnieuw nodig, en elke avond twijfel je: erbij blijven of juist weggaan? Jonge kinderen komen niet tot rust van jouw aanwezigheid, maar van herhaling.","main":"ws-slapen","also":["cursus-rust-in-huis","ws-hechtingsstijl"],"promise":"In de eerste 30 minuten: Je hebt een vaste bedtijdvolgorde die je vanavond al kunt gebruiken.","week":"Je hoeft niet elke avond opnieuw te beslissen wat verstandig is – dat scheelt de eerste week al tientallen minuten.","cta":"Start vanavond met een rustiger bedtijd"},{"key":"age_0_2_onrustig_huilt_veel","age":"0-2","theme":"Je kind wordt snel onrustig of huilt veel","title":"Je bent de hele dag aan het zoeken naar wat je kind nodig heeft.","insight":"Honger, slaap, prikkels, pijn? Dat zoeken maakt onzeker, juist omdat je zo graag wilt helpen. Bij veel jonge kinderen komt het huilen niet uit één oorzaak, maar uit optelling: te veel indrukken die niet op tijd zijn afgevoerd.","main":"ws-emmertje","also":["ws-sterk-voelen","ws-hechtingsstijl"],"promise":"In de eerste 30 minuten: Je herkent overprikkeling eerder en weet hoe je rust brengt vóór het huilen begint.","week":"Je stopt met uitproberen en weet welke momenten van de dag je moet vertragen.","cta":"Bekijk hoe je overprikkeling eerder ziet"},{"key":"age_0_2_nabijheid_aandacht","age":"0-2","theme":"Je kind vraagt voortdurend nabijheid of aandacht","title":"Je kind wil steeds dichtbij zijn en jij houdt nauwelijks ruimte over.","insight":"Even koken of even ademhalen voelt al lastig, en meteen komt het schuldgevoel. Kinderen die veel nabijheid vragen, hebben vaker behoefte aan voorspelbare aandacht dan aan méér aandacht.","main":"ws-hechtingsstijl","also":["cursus-rust-in-huis","ws-sterk-voelen"],"promise":"In de eerste 30 minuten: Je weet welke korte, vaste momenten je kind geruststellen, zodat je niet de hele dag beschikbaar hoeft te zijn.","week":"Je maakt weer dingen af zonder dat je kind protesteert – en zonder schuldgevoel achteraf.","cta":"Bekijk hoe je ruimte terugkrijgt zonder afstand te nemen"},{"key":"age_0_2_moeite_met_eten","age":"0-2","theme":"Je kind heeft moeite met eten of weigert eten","title":"De maaltijd voelt steeds meer beladen.","insight":"Je let op wat er binnenkomt, moedigt aan, wacht af – en voor je het weet gaat een gewoon eetmoment over spanning en controle. De verdeling helpt: jij bepaalt wát er op tafel komt en wanneer, je kind bepaalt of en hoeveel het eet.","main":"ws-eten","also":["cursus-rust-in-huis","ws-hsp-eigenwil"],"promise":"In de eerste 30 minuten: Je weet precies waar jouw verantwoordelijkheid aan tafel stopt en hoe je de strijd eruit haalt.","week":"De eerste maaltijd zonder aandringen voelt vreemd. De derde voelt als opluchting.","cta":"Bekijk hoe je vanavond rust aan tafel brengt"},{"key":"age_0_2_snel_gefrustreerd","age":"0-2","theme":"Je kind raakt snel gefrustreerd","title":"Als iets niet lukt, is de frustratie er binnen een paar seconden.","insight":"Je schiet te hulp, legt uit of maakt de taak kleiner, en toch komt dezelfde frustratie terug. Meteen helpen leert je kind vooral dat jij het overneemt zodra het moeilijk wordt.","main":"cursus-minder-boos","also":["ws-hsp-eigenwil","ws-emmertje"],"promise":"In de eerste 30 minuten: Je weet wanneer je helpt en wanneer je drie tellen wacht – dat is meestal het hele verschil.","week":"Je kind houdt langer vol bij iets wat niet meteen lukt, en jij hoeft minder vaak te troosten.","cta":"Bekijk wat je doet als het weer misgaat"},{"key":"age_0_2_moeite_met_overgangen","age":"0-2","theme":"Je kind heeft moeite met overgangen","title":"Voor jou is het het volgende punt op de dag, voor je kind stopt er iets abrupt.","insight":"Verschonen, stoppen met spelen, de deur uit: kleine overgangen geven grote strijd. Jonge kinderen hebben nog geen tijdsbesef, dus 'nog vijf minuten' zegt hen niets – een vast signaal wél.","main":"ws-dagelijkse-struggles","also":["cursus-rust-in-huis","ws-grenzen"],"promise":"In de eerste 30 minuten: Je hebt een vast overgangssignaal dat je vandaag al kunt inzetten bij bed, jas en verschonen.","week":"De ochtend en het naar-bed-moment kosten minder tijd, omdat je kind niet meer overvallen wordt.","cta":"Bekijk hoe je overgangen minder strijd maakt"},{"key":"age_0_2_onrustig_slapen","age":"0-2","theme":"Je kind slaapt onrustig of wordt vaak wakker","title":"Na een onrustige nacht is overdag alles zwaarder.","insight":"Je begint de dag met minder energie en minder geduld, en probeert intussen van alles: ritme aanpassen, troosten, wachten, erbij blijven. Wat er 's nachts gebeurt, wordt meestal aan het begin van de avond bepaald.","main":"cursus-rust-in-huis","also":["ws-slapen","ws-hechtingsstijl"],"promise":"In de eerste 30 minuten: Je hebt een avondopbouw die de nacht rustiger maakt, in plaats van elke nacht opnieuw te improviseren.","week":"Minder keren opstaan per nacht – en dat merk je overdag als eerste aan jezelf.","cta":"Bekijk hoe je vanaf vanavond de nacht rustiger maakt"},{"key":"age_2_4_driftbuien","age":"2-4","theme":"Je kind heeft driftbuien / wordt snel boos","title":"Tijdens een driftbui is je kind even echt niet bereikbaar.","insight":"Je probeert rustig te blijven, moet tegelijk begrenzen en troosten, en voorkomen dat het groter wordt. Praten en uitleggen werken op dat moment niet: het deel van de hersenen dat luistert, staat even uit.","main":"cursus-minder-boos","also":["ws-sterk-voelen","ws-emmertje"],"promise":"In de eerste 30 minuten: Je weet wat je wél en niet doet tijdens een bui, zodat het moment sneller voorbij is.","week":"Buien worden korter en jij komt er minder uitgeput uit – meestal binnen de eerste week zichtbaar.","cta":"Bekijk wat je doet bij de volgende driftbui"},{"key":"age_2_4_zelf_bepalen","age":"2-4","theme":"Je kind wil alles zelf bepalen","title":"Aankleden, eten, naar buiten: alles wordt onderhandelen.","insight":"Je wilt ruimte geven, maar niet dat de hele dag bepaald wordt door wat je kind toevallig wil. Peuters vechten zelden om het onderwerp – ze vechten om invloed.","main":"ws-grenzen","also":["ws-hsp-eigenwil","cursus-rust-in-huis"],"promise":"In de eerste 30 minuten: Je weet op welke twee kleine punten je invloed geeft en waar je grens gewoon dicht blijft.","week":"Aankleden en de deur uit gaan kosten minder onderhandeling, zonder dat je strenger hoeft te worden.","cta":"Bekijk hoe je uit de machtsstrijd blijft"},{"key":"age_2_4_niet_luisteren","age":"2-4","theme":"Je kind luistert niet / doet niet wat je vraagt","title":"Je vraagt het duidelijk, en er gebeurt niets.","insight":"Je herhaalt, praat rustiger, legt uit waarom – en gaat uiteindelijk harder praten of doet het zelf maar. Elke herhaling leert je kind dat de eerste keer nog niet telt.","main":"ws-communicatie","also":["ws-grenzen","ws-communicatie"],"promise":"In de eerste 30 minuten: Je weet hoe je één keer vraagt en wat je daarna doet, in plaats van vijf keer roepen.","week":"Je hoort jezelf minder herhalen. Dat is het eerste wat ouders terugkoppelen.","cta":"Bekijk hoe je minder hoeft te herhalen"},{"key":"age_2_4_doordrammen","age":"2-4","theme":"Je kind blijft doordrammen","title":"Je zegt nee, en dan begint het pas.","insight":"Na tien keer vragen ben je moe, of geef je toe om de rust te bewaren, en daarna baal je daarvan. Uitleggen ná je nee is voor je kind het signaal dat het besluit nog open ligt.","main":"ws-grenzen","also":["ws-dagelijkse-struggles","cursus-rust-in-huis"],"promise":"In de eerste 30 minuten: Je hebt één korte zin waarmee je de onderhandeling stopt zonder harder of kouder te worden.","week":"Je geeft minder vaak toe uit vermoeidheid – en dat scheelt het schuldgevoel achteraf.","cta":"Bekijk hoe je de onderhandeling stopt"},{"key":"age_2_4_grenzen_accepteren","age":"2-4","theme":"Je kind heeft moeite met grenzen accepteren","title":"Nee zeggen lukt wel. Wat er daarna komt, maakt het zwaar.","insight":"Boosheid, huilen, blijven proberen – en jij gaat twijfelen of je te streng was. Een kind hoeft je grens niet leuk te vinden om zich eraan te houden: protest is geen bewijs dat je fout zat.","main":"ws-meer-invloed","also":["ws-grenzen","ws-sterk-voelen"],"promise":"In de eerste 30 minuten: Je houdt je grens overeind én laat de emotie toe – je leert hoe je dat tegelijk doet.","week":"Je twijfelt minder na een nee, en dat merkt je kind sneller dan je denkt.","cta":"Bekijk hoe je je grens rustig laat staan"},{"key":"age_2_4_schreeuwt","age":"2-4","theme":"Je kind schreeuwt of wordt snel boos","title":"Zodra je kind schreeuwt, loopt de spanning in jou ook op.","insight":"Je lichaam reageert vaak eerder dan je hoofd weet wat verstandig is, en achteraf voel je je schuldig dat je kortaf werd. Op dat moment iets bedenken lukt niemand – wat wél werkt is één vooraf gekozen reactie.","main":"ws-kalm-blijven","also":["ws-emmertje","ws-zelfzorg"],"promise":"In de eerste 30 minuten: Je hebt één vaste reactie klaar, zodat jouw spanning de situatie niet groter maakt.","week":"Je schiet minder vaak uit. Dat is de verandering die ouders het snelst zelf voelen.","cta":"Bekijk hoe je kalm blijft als het escaleert"},{"key":"age_2_4_niet_slapen","age":"2-4","theme":"Je kind wil niet (zelf) slapen","title":"Nog water, nog een kus, nog één verhaaltje.","insight":"Eerst voelt het klein, maar na een lange dag is dit precies het moment waarop je geduld op is. Rekken gaat zelden over jou testen: het gaat over een volgorde die elke avond nét iets anders loopt.","main":"ws-slapen","also":["cursus-rust-in-huis","ws-hechtingsstijl"],"promise":"In de eerste 30 minuten: Je hebt een bedtijdvolgorde waar je niet elke avond opnieuw over hoeft te beslissen.","week":"Bedtijd wordt korter, en je avond begint weer op een normaal tijdstip.","cta":"Start vanavond met een kortere bedtijd"},{"key":"age_2_4_aandacht_bevestiging","age":"2-4","theme":"Je kind vraagt veel aandacht en bevestiging","title":"Je hoort de hele dag je naam.","insight":"Je wilt geven wat je kind nodig heeft, maar maakt intussen niets af en raakt overprikkeld. Méér aandacht geven werkt hier zelden – voorspelbare aandacht wel.","main":"ws-zelfvertrouwen","also":["ws-hechtingsstijl","cursus-rust-in-huis"],"promise":"In de eerste 30 minuten: Je zet aandacht op vaste momenten in, zodat je kind zich veiliger voelt en jij ruimte terugkrijgt.","week":"Je kind speelt langer zelfstandig, zonder dat je iets hebt hoeven afhouden.","cta":"Bekijk hoe je ruimte terugkrijgt"},{"key":"age_5_7_niet_luisteren","age":"5-7","theme":"Je kind luistert niet / doet niet wat je vraagt","title":"Je kind begrijpt het prima, en toch moet je alles herhalen.","insight":"Er lijkt pas beweging te komen als jij harder wordt, en daar baal je van. Kinderen reageren niet op hoe váák je iets zegt, maar op wat er daarna gebeurt.","main":"ws-communicatie","also":["ws-communicatie","ws-grenzen"],"promise":"In de eerste 30 minuten: Je weet hoe je één keer vraagt en dan doet wat je hebt aangekondigd – dat scheelt tien waarschuwingen.","week":"Minder gemopper in huis, omdat je niet meer hoeft op te lopen in volume.","cta":"Bekijk hoe je minder hoeft te herhalen"},{"key":"age_5_7_ruzie_met_anderen","age":"5-7","theme":"Je kind heeft vaak ruzie met andere kinderen","title":"Je bent de hele dag scheidsrechter.","insight":"Wie begon, wie had gelijk, wie moet sorry zeggen – en meestal wordt iedereen bozer van jouw uitspraak. Zoeken wie schuldig is, leert kinderen vooral beter pleiten.","main":"ws-communicatie","also":["ws-broer-zus","cursus-weerbaarheid"],"promise":"In de eerste 30 minuten: Je begeleidt ruzies zonder ze over te nemen, zodat je kind leert wat het zélf kan doen.","week":"Je wordt minder vaak geroepen om iets op te lossen wat de kinderen zelf aankunnen.","cta":"Bekijk hoe je ruzies begeleidt zonder scheidsrechter te zijn"},{"key":"age_5_7_brutale_reacties","age":"5-7","theme":"Je kind praat terug of geeft brutale reacties","title":"Een grote mond raakt precies waar jij gevoelig voor bent.","insight":"Je wilt corrigeren, want zo praat je niet tegen mij. Maar zodra je erop ingaat, wordt het groter: brutaal gedrag is meestal een test of jij meedoet aan de discussie.","main":"ws-grenzen","also":["ws-opstandig","ws-communicatie"],"promise":"In de eerste 30 minuten: Je weet hoe je brutale reacties kort stopt zonder in een woordenstrijd te belanden.","week":"Discussies duren seconden in plaats van minuten, en de sfeer herstelt sneller.","cta":"Bekijk hoe je een grote mond stopt zonder ruzie"},{"key":"age_5_7_snel_boos","age":"5-7","theme":"Je kind raakt snel boos of gefrustreerd","title":"De boosheid loopt snel op.","insight":"Een klein verzoek of een plan dat verandert kan al genoeg zijn. De boosheid begint vaak niet bij het zichtbare gedrag zelf; er zit meestal een kleiner schakelmoment vlak ervoor.","main":"ws-kalm-blijven","also":["cursus-minder-boos","ws-sterk-voelen"],"promise":"In de eerste 30 minuten: Je ziet boosheid eerder aankomen en weet welk moment van de dag je moet aanpassen.","week":"Minder uitbarstingen op het moment dat nu steeds misgaat, omdat je op de juiste plek leert kijken.","cta":"Bekijk waar de boosheid echt begint"},{"key":"age_5_7_concentreren","age":"5-7","theme":"Je kind heeft moeite met concentreren","title":"Je ziet dat je kind het kan, maar erbij blijven lukt niet.","insight":"Starten, doorgaan en afmaken blijven lastig, hoe vaak je ook uitlegt wat de bedoeling is. Dat is bijna nooit een motivatieprobleem: de taak is te groot om te overzien.","main":"ws-executieve-functies","also":["ws-executieve-functies","cursus-executieve-functies"],"promise":"In de eerste 30 minuten: Je weet hoe je een taak zo klein maakt dat je kind vanzelf begint, zonder aansporen.","week":"Huiswerk en opruimen beginnen zonder discussie – dat scheelt elke dag hetzelfde gesprek.","cta":"Bekijk hoe je je kind laat starten"},{"key":"age_5_7_delen_samenspelen","age":"5-7","theme":"Je kind vindt het lastig om te delen of samen te spelen","title":"Samen spelen gaat goed, tot delen of verliezen aan de beurt is.","insight":"Je legt uit wat sociaal handig is, maar in het moment komt dat niet binnen. Kinderen leren sociale stappen niet van uitleg achteraf, maar van korte zinnen die ze in het moment zelf kunnen gebruiken.","main":"ws-zelfvertrouwen","also":["ws-communicatie","ws-hechtingsstijl"],"promise":"In de eerste 30 minuten: Je geeft je kind concrete zinnen voor delen, wachten en het goedmaken na ruzie.","week":"Speelafspraken lopen vaker uit zonder incident, en je kind komt met minder gedoe thuis.","cta":"Bekijk welke zinnen je kind kan gebruiken"},{"key":"age_5_7_doordrammen_discussie","age":"5-7","theme":"Je kind blijft doordrammen of in discussie gaan","title":"Het gaat niet meer om de regel, maar om wie het langst volhoudt.","insight":"Er komt een vraag, een tegenargument, nog een reden – en jij legt alsnog uit waarom je besluit logisch is, terwijl je eigenlijk al klaar was. Elke extra uitleg verlengt de discussie.","main":"ws-grenzen","also":["ws-grenzen","ws-opstandig"],"promise":"In de eerste 30 minuten: Je weet wanneer je stopt met praten en welk zinnetje je daarna herhaalt.","week":"Je bent 's avonds minder moe van praten – het meest onderschatte effect.","cta":"Bekijk hoe je een discussie beëindigt"},{"key":"age_5_7_regels_volgen","age":"5-7","theme":"Je kind heeft moeite met regels volgen","title":"Regels worden vergeten, getest of genegeerd.","insight":"Jij bent steeds degene die waarschuwt en corrigeert, en dat is slopend. Een regel werkt pas als je kind vooraf weet wat jij daarna doet – zonder dat tweede deel is het geen regel, maar een wens.","main":"ws-meer-invloed","also":["ws-grenzen","cursus-rust-in-huis"],"promise":"In de eerste 30 minuten: Je maakt van drie huisregels afspraken die je kind vooraf begrijpt en jij kunt volhouden.","week":"Minder corrigeren achteraf, omdat vooraf duidelijk is wat er gebeurt.","cta":"Bekijk hoe je regels laat werken"},{"key":"age_8_12_niet_luisteren","age":"8-12","theme":"Je kind luistert niet / doet niet wat je vraagt","title":"Je kind hoort je wel, maar doet niet wat je vraagt.","insight":"Je krijgt uitstel, gemopper of helemaal geen reactie, en gaat uiteindelijk geïrriteerd aandringen. Op deze leeftijd ligt het zelden aan begrip, maar aan timing: een vraag tussendoor verdwijnt.","main":"ws-meer-invloed","also":["ws-communicatie","ws-communicatie"],"promise":"In de eerste 30 minuten: Je weet hoe je vooraf afspreekt wannéér iets af moet zijn, zodat het nalopen vervalt.","week":"Je loopt minder achter je kind aan, en de sfeer thuis wordt daar direct lichter van.","cta":"Bekijk hoe je invloed krijgt zonder corrigeren"},{"key":"age_8_12_grote_mond","age":"8-12","theme":"Je kind reageert brutaal of gaat in discussie","title":"Het voelt alsof je steeds opnieuw moet bewijzen dat jij de ouder bent.","insight":"Je kind reageert fel en gaat overal over in discussie, en de verleiding is groot om harder te worden. Dat is precies het moment waarop de machtsstrijd begint.","main":"ws-opstandig","also":["ws-grenzen","ws-kalm-blijven"],"promise":"In de eerste 30 minuten: Je weet hoe je het gesprek rustig sluit – de enige zet die je kind niet kan winnen.","week":"Ruzies escaleren minder vaak, en jullie praten sneller weer normaal met elkaar.","cta":"Bekijk hoe je uit de machtsstrijd blijft"},{"key":"age_8_12_motivatie","age":"8-12","theme":"Je kind heeft moeite met motivatie","title":"Jij draagt meer verantwoordelijkheid voor het schoolwerk dan je kind.","insight":"Je herinnert, helpt, controleert en duwt, en wordt daar moe en soms boos van. Weinig motivatie is bijna nooit luiheid, maar vastlopen bij het starten – en wie herinnert, neemt precies die stap over.","main":"ws-huiswerk-motivatie","also":["cursus-executieve-functies","ws-school-vastloopt"],"promise":"In de eerste 30 minuten: Je weet hoe je je kind laat starten zonder trekken, duwen of herhalen.","week":"Huiswerk begint zonder dat jij het gesprek hoeft te openen. Dat is de eerste week al te merken.","cta":"Bekijk hoe je stopt met aansporen"},{"key":"age_8_12_schermen","age":"8-12","theme":"Je kind zit veel op schermen en stopt moeilijk","title":"Elk stopmoment levert opnieuw strijd op.","insight":"Je kondigt het aan, bent duidelijk, en toch volgt protest zodra het scherm uit moet. Het probleem zit zelden in de regel, maar in het stopmoment: midden in een spel stoppen is echt moeilijk.","main":"ws-schermtijd","also":["ws-grenzen","ws-grenzen"],"promise":"In de eerste 30 minuten: Je koppelt stoppen aan het einde van iets in plaats van aan de klok – dat haalt de helft van de strijd weg.","week":"Het scherm gaat uit zonder onderhandelen. Voor de meeste ouders is dat het eerste zichtbare resultaat.","cta":"Bekijk hoe schermtijd zonder strijd stopt"},{"key":"age_8_12_emoties","age":"8-12","theme":"Je kind vindt het lastig om met emoties om te gaan","title":"Op het moment zelf is je kind niet goed bereikbaar.","insight":"Je praat, stelt gerust of corrigeert het gedrag, en er landt niets. Kinderen kunnen pas nadenken als de spanning zakt, niet ervoor.","main":"ws-sterk-voelen","also":["ws-prikkels-buiten","cursus-minder-boos"],"promise":"In de eerste 30 minuten: Je weet in welke volgorde je troost en begrenst, zodat je je grens niet hoeft los te laten.","week":"Je kind komt sneller terug naar rust, en jij hoeft achteraf minder te repareren.","cta":"Bekijk hoe je emoties begeleidt zonder mee te gaan"},{"key":"age_8_12_piekert","age":"8-12","theme":"Je kind maakt zich snel zorgen of piekert","title":"Je stelt gerust, en een uur later is de zorg weer terug.","insight":"Je zegt dat het goedkomt en legt uit dat het niet nodig is om bang te zijn, en toch komt dezelfde spanning terug. Geruststelling werkt kort en maakt de zorg op termijn groter, omdat je kind leert dat het jouw woorden nodig heeft om te kalmeren.","main":"cursus-angst-de-baas","also":["ws-zelfvertrouwen","ws-prikkels-buiten"],"promise":"In de eerste 30 minuten: Je weet hoe je steun geeft én je kind kleine stappen zelf laat nemen, zonder de angst te vergroten.","week":"Minder herhaalvragen 's avonds, omdat je kind zichzelf leert kalmeren.","cta":"Bekijk hoe je piekeren kleiner maakt"},{"key":"age_8_12_sociale_situaties","age":"8-12","theme":"Je kind heeft moeite met sociale situaties","title":"Wat op school gebeurt, werkt thuis nog lang door.","insight":"Buitengesloten worden, groepsdruk of onzekerheid raakt je kind, en jij weet niet altijd of je moet oplossen, adviseren of ruimte geven. Kinderen hebben vooral woorden nodig die ze mórgen kunnen gebruiken.","main":"cursus-weerbaarheid","also":["ws-meeloopgedrag","ws-zelfvertrouwen"],"promise":"In de eerste 30 minuten: Je bedenkt samen één zin die je kind morgen op het schoolplein kan gebruiken.","week":"Je kind vertelt weer wat er speelt, omdat je het probleem niet meteen overneemt.","cta":"Bekijk hoe je je kind steviger maakt"},{"key":"age_8_12_perfectionisme","age":"8-12","theme":"Je kind stelt hoge eisen aan zichzelf","title":"Liever niet beginnen dan een fout maken.","insight":"Je zegt dat het niet perfect hoeft, maar dat verandert de spanning niet. Perfectionisme zakt niet van geruststelling, maar van ervaring: kleine fouten meemaken die goed aflopen.","main":"ws-zelfvertrouwen","also":["cursus-angst-de-baas","ws-hoogbegaafdheid-diagnoses"],"promise":"In de eerste 30 minuten: Je weet hoe je fouten normaliseert en de druk verlaagt zonder je kind klein te maken.","week":"Je kind begint sneller aan iets nieuws, met minder tranen vooraf.","cta":"Bekijk hoe je de druk verlaagt"},{"key":"age_13_18_regels","age":"13-18","theme":"Je kind luistert niet / trekt zich weinig aan van regels","title":"Je puber doet alsof jouw grenzen onderhandelbaar zijn.","insight":"Je schommelt tussen loslaten en er weer bovenop zitten, en dat is voor jullie allebei vermoeiend. Pubers reageren nauwelijks op uitleg, wél op wat er daadwerkelijk gebeurt.","main":"cursus-pittige-pubers","also":["ws-opstandig","ws-meer-invloed"],"promise":"In de eerste 30 minuten: Je maakt korte afspraken met een duidelijk gevolg, in plaats van nog een goed gesprek.","week":"Minder preken, minder dichtslaande deuren – en afspraken die vaker gewoon nagekomen worden.","cta":"Bekijk hoe je grenzen stelt die blijven staan"},{"key":"age_13_18_verzet","age":"13-18","theme":"Je kind wil alles zelf bepalen / gaat in verzet","title":"Hoe harder jij trekt, hoe harder je puber terugduwt.","insight":"Je legt uit waarom iets belangrijk is en het gesprek verandert meteen in trekken en duwen. Verzet gaat bij pubers zelden over het onderwerp: het gaat over zelf mogen beslissen.","main":"ws-grenzen","also":["cursus-pittige-pubers","ws-puber-executieve-functies"],"promise":"In de eerste 30 minuten: Je weet welke beslissingen je teruggeeft en waar je kort en duidelijk blijft.","week":"Gewone afspraken worden weer gewoon, in plaats van elke keer een discussie.","cta":"Bekijk hoe je uit het trekken en duwen komt"},{"key":"age_13_18_motivatie","age":"13-18","theme":"Je kind heeft weinig motivatie","title":"Jij werkt harder aan de toekomst van je puber dan je puber zelf.","insight":"School en verantwoordelijkheden blijven liggen, en hoe meer jij herinnert, hoe meer weerstand je krijgt. Zolang jij het overzicht bewaakt, hoeft je puber dat niet te leren.","main":"cursus-executieve-functies","also":["ws-huiswerk-motivatie","ws-school-vastloopt"],"promise":"In de eerste 30 minuten: Je weet hoe je eigenaarschap teruggeeft zonder dat alles instort.","week":"Je hoeft minder te herinneren – en er ontstaat weer ruimte voor gesprekken die niet over school gaan.","cta":"Bekijk hoe je stopt met trekken"},{"key":"age_13_18_schermen","age":"13-18","theme":"Je kind zit veel op schermen / telefoon","title":"De telefoon wint van elke afspraak die je maakt.","insight":"Je maakt afspraken, en in de praktijk volgt discussie, stiekem gebruik of opnieuw onderhandelen. Afspraken die je niet kunt volhouden, leren je puber vooral dat volhouden loont.","main":"ws-schermtijd","also":["ws-grenzen","cursus-pittige-pubers"],"promise":"In de eerste 30 minuten: Je maakt één afspraak die je wél elke dag waarmaakt – meer waard dan vijf goede regels.","week":"Het dagelijkse onderhandelen over de telefoon stopt, ook als het schermgebruik nog niet meteen daalt.","cta":"Bekijk hoe je schermafspraken volhoudt"},{"key":"age_13_18_fel_of_sluit_zich_af","age":"13-18","theme":"Je kind reageert fel of sluit zich af","title":"Op een gewone vraag krijg je felheid of stilte terug.","insight":"Hoe meer je vraagt, hoe meer je puber zich afsluit, en dat doet pijn omdat je juist dichtbij wilt blijven. Vragen voelt voor pubers al snel als controle.","main":"ws-kalm-blijven","also":["ws-communicatie","ws-zelfzorg"],"promise":"In de eerste 30 minuten: Je weet wanneer je contact zoekt en wanneer je stopt met trekken, zonder je grens op te geven.","week":"Gesprekken eindigen minder vaak in afstand – en soms begint je puber weer zelf te praten.","cta":"Bekijk hoe je contact houdt zonder te forceren"},{"key":"age_13_18_stemmingswisselingen","age":"13-18","theme":"Je kind heeft moeite met emoties of stemmingswisselingen","title":"Je weet nooit welke reactie je krijgt.","insight":"Het ene moment lijkt alles goed, het volgende is er boosheid of afstand, en jij loopt op eieren. Meebewegen met elke stemming maakt het huis onvoorspelbaar, terwijl je puber daar juist houvast uit haalt.","main":"cursus-minder-boos","also":["ws-prikkels-buiten","ws-sterk-voelen"],"promise":"In de eerste 30 minuten: Je blijft zelf voorspelbaar bij wisselende emoties, zonder alles goed te praten.","week":"Er komt meer stabiliteit in momenten die nu snel kantelen – dat merk je het eerst aan jezelf.","cta":"Bekijk hoe je rustig blijft bij stemmingswisselingen"},{"key":"age_13_18_onzekerheid_stress","age":"13-18","theme":"Je kind heeft onzekerheid of stress","title":"Je puber draagt meer spanning dan je aan de buitenkant ziet.","insight":"Stress uit zich in boosheid, vermijden of terugtrekken, en iets goedbedoelds valt regelmatig verkeerd. Advies geven verhoogt op zo'n moment de druk, ook als het advies klopt.","main":"cursus-angst-de-baas","also":["cursus-weerbaarheid","ws-zelfvertrouwen"],"promise":"In de eerste 30 minuten: Je weet hoe je benoemt wat je ziet zonder er een oplossing achteraan te plakken – dat opent het gesprek vaker.","week":"Je puber laat je weer iets zien van wat er speelt, in plaats van alles binnen te houden.","cta":"Bekijk hoe je steun geeft zonder druk"},{"key":"age_13_18_trekt_zich_terug","age":"13-18","theme":"Je kind trekt zich terug of deelt weinig","title":"Je puber deelt weinig en jij vraagt je af hoe dichtbij je nog mag komen.","insight":"Je wilt ruimte geven, maar ook niet missen dat er iets speelt – en hoe meer je vraagt, hoe verder de deur dichtgaat. Pubers praten zelden op afspraak, maar wél op onverwachte momenten.","main":"ws-communicatie","also":["cursus-pittige-pubers","ws-zelfzorg"],"promise":"In de eerste 30 minuten: Je weet welke momenten van de dag wel werken en hoe je beschikbaar blijft zonder te vragen.","week":"Er komen weer korte gesprekken op gang, zonder dat jij ze hoeft te forceren.","cta":"Bekijk hoe je de deur openhoudt"}]; for(const route of PLAN_ROUTES){ for(const key of ['theme','title','insight','promise','week','cta']){ if(typeof route[key]==='string')route[key]=cleanAiText(route[key]); } } function ageRange(value){ const t=String(value||"").toLowerCase().trim(); let m=t.match(/^(\d+)\s*[–—-]\s*(\d+)(?:\s*jaar)?$/); if(m){const min=+m[1],max=+m[2];return min>=0&&max<=18&&min<=max?{min,max}:null;} m=t.match(/^(\d+(?:[.,]\d+)?)\s*(jaar|maand|maanden)?$/); if(!m)return null;const n=Number(m[1].replace(',','.'))/(m[2]&&m[2].startsWith('maand')?12:1); return n>=0&&n<=18?{min:n,max:n}:null; } function hasADHD(){ const t=String(state.answers.diagnose||"").toLowerCase(); return /\badhd\b|\badd\b/.test(t) && !/(geen|niet|zonder)\s+(?:een\s+)?(?:vermoeden\s+van\s+|diagnose\s+van\s+)?(?:adhd|add)\b|(?:adhd|add)\s+(?:is\s+)?uitgesloten/.test(t); } function detectSafety(value){ const t=String(value).toLowerCase(); if(/ademt niet|bewusteloos|overdosis|nu.*(?:vermoorden|doden)|ernstig gewond/.test(t)) return 'acuut'; if(/zelfmoord|su[iï]cid|zelfbeschadig|niet meer leven|mezelf.*(?:snijd|doden|pijn)|zichzelf.*(?:snijd|pijn)|dood wil/.test(t))return 'zelf'; if(/misbruik|mishandel|seksueel geweld|partner.*slaat|ik\s+(?:sla|sloeg)\s+(?:mijn\s+)?(?:kind|zoon|dochter|hem|haar)\b|ik\s+heb.{0,45}(?:kind|zoon|dochter|hem|haar).{0,45}\bgeslagen\b|ik\s+heb.{0,20}\bgeslagen\b.{0,45}(?:kind|zoon|dochter|hem|haar)|bang.{0,80}ik.{0,45}(?:sla|sloeg|pijn doe|controle verlies)|(?:bang|schrik).*van mezelf|controle.*verlie|pijn.*doen|onveilig|geweld thuis/.test(t))return 'zorgen'; return null; } function coreText(){return lower([state.answers.probleem,state.answers.doorvraag,state.answers.doorvraag_extra,state.answers.eerste_anders].filter(Boolean).join(' '));} function siblingRelevant(){ const text=coreText(),extra=lower(state.answers.gezin_extra),all=text+' '+extra; const dismissed=/(broer|broertje|zus|zusje|kinderen).{0,55}(gaat goed|geen invloed|speelt niet|spelen niet|niet mee|niet betrokken)|(?:gaat goed|geen invloed|niet mee|niet betrokken).{0,55}(broer|broertje|zus|zusje|kinderen)/.test(all); const relevant=/broer|broertje|zus|zusje|kinderen onderling|elkaar|ruzie|bots|jaloers|delen/.test(text)||/speelt.*ook|bots|ruzie|onderling|eromheen|meedoen|jaloers|delen/.test(extra); return relevant&&!dismissed; } function hasAfterSchoolProblem(value){ const text=lower(value); const matches=[...text.matchAll(/\b(na school|na schooltijd|uit school|schooltijd|schooldag|thuiskom|thuis komt|thuiskomt|van school|school uit)\b/g)]; return matches.some(match=>{ const before=text.slice(Math.max(0,match.index-24),match.index); return !/\b(niet|geen|nooit|zelden)\b\s*(?:direct\s*)?(?:per se\s*)?$/.test(before); }); } function afterSchoolContext(value){return hasAfterSchoolProblem(value);} function schoolPositiveOnly(){ const text=coreText(),mentions=/\bschool\b|opvang|klas|juf|meester/.test(text); const positive=/(?:op school|school|in de klas).{0,40}(?:goed|prima|geen probleem|geen problemen|ok[eé]|rustig)|(?:goed|prima|ok[eé]).{0,40}(?:op school|school|in de klas)/.test(text); const problem=/(?:op school|school|in de klas|klas|juf|meester).{0,35}(?:lastig|moeilijk|vast|strijd|drift|boos|ruzie|probleem|problemen|niet goed|niet lekker|niet ok[eé])|huiswerk|schoolwerk/.test(text)||hasAfterSchoolProblem(text); return mentions&&positive&&!problem; } function schoolHomeEmotionContrast(){ const text=coreText(); return schoolPositiveOnly()&&/\bthuis\b/.test(text)&&/drift|bui|buien|boos|woed|ontplof|slaat|slaan|schopt|bijt|niet te genieten/.test(text); } function unsupportedContext(value){ const text=lower(value),source=coreText(); if(/\bik kan (?:me|mij) voorstellen\b|\bik stel me voor\b|\bwaarschijnlijk wil je\b|\bje wilt vaker\b|\brustig zou willen blijven\b|\bik\s+(?:ga|wil|neem|noteer|check|probeer|kijk)\b|niet invullen|niet zomaar invullen|zonder .* in te vullen|proces|werkwijze|\bdynamiek\b/.test(text))return true; if(!siblingRelevant()&&/\b(gezinsdynamiek|broer|broertje|zus|zusje|andere kinderen|kinderen onderling|tussen de kinderen|onderling)\b/.test(text))return true; if(afterSchoolContext(text)&&!afterSchoolContext(source))return true; if(schoolPositiveOnly()&&/(school|klas).{0,45}(spanning|druk|overprikkel|inhouden|masker|ontladen)|(spanning|druk|overprikkel|inhouden|masker|ontladen).{0,45}(school|klas)/.test(text))return true; return false; } function catalogData(id){return CATALOG[id]||{};} function catalogKind(id){const data=catalogData(id);return data.soort||data.k||'Onderdeel';} function catalogWhy(id){const data=catalogData(id);return data.kiesDitAls||data.d||data.watLeerJe||'Dit onderdeel past bij wat er nu thuis speelt.';} function catalogChanges(id){const data=catalogData(id);return Array.isArray(data.watVerandertThuis)?data.watVerandertThuis:Array.isArray(data.o)?data.o:[];} function hasParentPrikkelContext(){ const parent=lower([state.answers.oudergevoel,state.answers.jij].filter(Boolean).join(' ')); const all=lower([state.answers.probleem,state.answers.doorvraag,state.answers.doorvraag_extra,state.answers.oudergevoel,state.answers.jij].filter(Boolean).join(' ')); return /\bik\b.{0,80}\b(overprikkel|prikkel|leegloop|leeg loopt|overvraagd|vol hoofd|drukte|geluid|lawaai|uitgeput|op|moe)\b/.test(all) || /\b(mijn|m'n)\s+(hoofd|lijf|spanning|energie|prikkels|grens)\b/.test(all) || /\b(overprikkel|prikkel|leegloop|leeg loopt|overvraagd|vol hoofd|drukte|geluid|lawaai|uitgeput|op|moe)\b/.test(parent); } const STARTERS=["7daagse","startmodule"]; const isLes=id=>["Cursus","Workshop"].includes(catalogKind(id)); function eligible(id){ if(!Object.hasOwn(CATALOG,id))return false; const age=ageRange(state.answers.leeftijd);if(!age)return false; if(id.startsWith('adhd-')&&!hasADHD())return false; if(id==='cursus-weerbaarheid' && (age.min<6||age.max>12))return false; if(['cursus-pittige-pubers','ws-puber-executieve-functies'].includes(id) && age.min<12)return false; if(id==='ws-prikkels-buiten'&&!hasParentPrikkelContext())return false; return true; } function topicOf(){ const p=lower([state.answers.probleem,state.answers.doorvraag,state.answers.doorvraag_extra,state.answers.eerste_anders,state.answers.diagnose].filter(Boolean).join(' ')); const age=ageRange(state.answers.leeftijd); if(hasScreenContext(p))return 'scherm'; if(/bed|slaap|avond|nacht/.test(p))return 'bed'; if(/ochtend|chaos|aankleden|vertrekken|routine|ritme/.test(p))return 'ritme'; if(/puber|discuss/.test(p)&&(!age||age.min>=10))return 'puber'; if(/angst|bang|onzeker|piek|zorg|vermijd/.test(p))return 'angst'; if(/plan|begin|huiswerk|vergeet/.test(p))return 'plannen'; if(/emotie|verdriet|gevoelig|prikkel|overprikkel|hsp/.test(p))return 'emotie'; if(/boos|drift|ontplof|strijd|opstandig|luister|grens/.test(p))return 'strijd'; if(siblingRelevant()&&/broer|zus|kinderen onderling|elkaar|ruzie|bots/.test(p))return 'gezin'; return 'breed'; } function needsMinderStrijd(){ const t=lower([state.answers.probleem,state.answers.doorvraag,state.answers.doorvraag_extra,state.answers.eerste_anders].filter(Boolean).join(' ')); return /boos|drift|ontplof|strijd|opstandig|luister|grens|nee zeggen|niet luisteren|grote mond|scherm uit|tablet uit|stoppen met/.test(t); } function pickStarter(){return needsMinderStrijd()?'7daagse':'startmodule';} function momentLabel(){ const t=lower([state.answers.probleem,state.answers.doorvraag,state.answers.doorvraag_extra,state.answers.eerste_anders].filter(Boolean).join(' ')); if(hasScreenContext(t))return 'het schermmoment'; if(/ochtend|aankleden|tandenpoetsen|vertrekken/.test(t))return 'de ochtendspits'; if(/avondeten|eten aan tafel/.test(t))return 'het avondeten'; if(/bed|slaap|naar boven|in bed/.test(t))return 'het bedritueel'; if(schoolHomeEmotionContrast())return 'het moment thuis waarop het kantelt'; if(!schoolPositiveOnly()&&/school|huiswerk/.test(t))return 'school of huiswerk'; if(siblingRelevant()&&/broer|zus|elkaar/.test(t))return 'het moment tussen de kinderen'; return 'het moeilijke moment'; } function reminderTime(kind){ const t=lower([state.answers.probleem,state.answers.doorvraag,state.answers.doorvraag_extra,state.answers.eerste_anders].filter(Boolean).join(' ')); if(kind==='growth')return 'Vrijdag 19:30'; if(kind==='connection')return /bed|slaap|avond/.test(t)?'18:30':'16:30'; if(/ochtend|aankleden|vertrekken|tandenpoetsen/.test(t))return '07:15'; if(/avondeten|eten aan tafel/.test(t))return '17:45'; if(/bed|slaap|naar boven|in bed/.test(t))return '19:15'; if(schoolHomeEmotionContrast())return '16:30'; if(!schoolPositiveOnly()&&/school|huiswerk/.test(t))return '15:30'; return '16:30'; } function localGoals(n){ const moment=momentLabel(); return [ `Ik oefen deze week één keer bij ${moment}.`, 'Ik noteer één keer wat er vlak ervoor gebeurde.', n&&n!=='je kind'?`Ik plan één kort rustig moment met ${n}.`:'Ik plan één kort rustig contactmoment.' ]; } function localReminders(n){ const moment=momentLabel(); return [ {tijd:reminderTime('before'),titel:`Voor ${moment}`,tekst:'Kies je kleine stap voordat het moment begint.'}, {tijd:reminderTime('connection'),titel:'Even samen',tekst:`Plan één kort fijn moment met ${n}.`}, {tijd:reminderTime('growth'),titel:'Terugkijken',tekst:'Noteer één ding dat iets eerder, rustiger of zachter ging.'} ]; } function agePlanLabel(){ const age=ageRange(state.answers.leeftijd); if(!age)return null; if(age.max<=2)return '0-2'; if(age.min<5)return '2-4'; if(age.min<8)return '5-7'; if(age.min<13)return '8-12'; return '13-18'; } function routeInput(){ return lower([state.answers.probleem,state.answers.doorvraag,state.answers.doorvraag_extra,state.answers.eerste_anders,state.answers.diagnose].filter(Boolean).join(' ')); } function planScore(plan,text){ const hay=lower([plan.key,plan.theme,plan.title,plan.insight,plan.cta].join(' ')); const schoolIsContrast=schoolPositiveOnly(); const textForPairs=schoolIsContrast?text.replace(/\b(?:op school|school|in de klas|klas|juf|meester|opvang)\b/g,''):text; const words=[...new Set(textForPairs.match(/[\p{L}]{4,}/gu)||[])].filter(w=>!['kind','mijn','wordt','gaat','niet','veel','heel','voor','deze','waar','liefst','eerste','anders','zien','snel'].includes(w)); let score=0; for(const word of words)if(hay.includes(word))score+=1; const pairs=[ [/boos|drift|woed|schreeuw|frustr|overstuur|kort lontje/,/boos|drift|schreeuw|frustr|overstuur|stemmingswisselingen|emoties/], [/slaap|slapen|bed|nacht|wakker/,/slaap|slapen|bed|nacht|wakker/], [/\b(?:scherm(?:en|tijd)?|tablet|telefoon|game|gamen|youtube|ipad|tv)\b/,/\b(?:scherm(?:en|tijd)?|telefoon)\b/], [/luister|vragen|doet niet|regels|regel/,/luister|regels|invloed/], [/grens|nee|doordram|discuss|onderhandel/,/grenzen|doordram|discussie|zelf_bepalen|verzet/], [/aandacht|nabij|bevestiging|claim/,/nabijheid|aandacht|bevestiging|hechting/], [/eten|maaltijd|hap|weigert eten/,/eten|maaltijd/], [/overgang|aankleden|vertrekken|routine|ochtend|verschonen/,/overgangen|routine|dagelijkse|ochtend/], [/concentr|huiswerk|school|taak|plannen|vergeet|motivatie/,/concentreren|motivatie|school|executieve|huiswerk/], [/angst|bang|piek|zorg|onzeker|stress|perfect/,/angst|piekert|onzekerheid|stress|perfectionisme/], [/ruzie|broer|zus|delen|samen|sociaal|vriend|pesten/,/ruzie|delen|samen|sociale|weerbaarheid|broer/], [/terugtrek|afsluit|stil|deelt weinig|afstand/,/terug|sluit|weinig|afstand/] ]; for(const [needle,target] of pairs)if(needle.test(textForPairs)&&target.test(hay))score+=6; if(state.answers.eerste_anders){ const desired=lower(state.answers.eerste_anders); for(const [needle,target] of pairs)if(needle.test(desired)&&target.test(hay))score+=4; } if(hasScreenContext(textForPairs)){ if(/\b(?:scherm(?:en|tijd)?|telefoon)\b/.test(hay))score+=12; else if(/boos|drift|opstandig|discuss|grens|machtsstrijd/.test(hay))score-=2; } if(/slaap|slapen|bed|nacht|wakker/.test(textForPairs)&&/slaap|bedtijd|nacht/.test(hay))score+=10; if(/huiswerk|schoolwerk|motivatie|taak|starten|plannen/.test(textForPairs)&&/huiswerk|motivatie|executieve|school/.test(hay))score+=10; if(/piek|bang|angst|zorgen|stress|onzeker/.test(textForPairs)&&/angst|piekert|onzekerheid|stress/.test(hay))score+=10; if(schoolIsContrast&&/school|schoolplein|klas|huiswerk|leren|concentreren|motivatie/.test(hay))score-=12; return score; } function priorityPlan(pool,text){ const pick=pattern=>pool.find(plan=>pattern.test(plan.key+' '+plan.theme)); if(/boos|drift|woed|ontplof|frustr|overstuur|kort lontje/.test(text))return pick(/snel_boos|driftbuien|boze_buien|emoties|stemmingswisselingen/); if(hasScreenContext(text))return pick(/\bscherm/); if(/slaap|slapen|bed|nacht|wakker/.test(text))return pick(/slapen|slaap/); if(/angst|bang|piek|zorg|onzeker|stress|perfect/.test(text))return pick(/angst|piekert|onzekerheid|stress|perfectionisme/); return null; } function planMatch(){ const label=agePlanLabel(); const candidates=PLAN_ROUTES.filter(plan=>!label||plan.age===label); const pool=candidates.length?candidates:PLAN_ROUTES; const text=routeInput(); const priority=priorityPlan(pool,text); if(priority)return priority; let best=pool[0],bestScore=-1; for(const plan of pool){const score=planScore(plan,text);if(score>bestScore){best=plan;bestScore=score;}} return best; } function mechanismFrom(plan){ const parts=cleanAiText(plan?.insight||'').match(/[^.!?]+[.!?]?/g)||[]; return (parts[parts.length-1]||'Het gedrag kan ontstaan doordat je kind iets nog niet goed kan overzien, stoppen of reguleren.').trim(); } function diagnosisContext(){ const value=cleanAiText(state.answers.diagnose); if(!value||/^(nee|liever overslaan)$/i.test(value))return ''; return `Wat je invulde over ${value.toLowerCase()} neem ik voorzichtig mee als context, niet als verklaring voor alles.`; } function planStory(plan){ const age=cleanAiText(state.answers.leeftijd); const ageText=age?`Bij ${age} kijk je niet alleen naar het gedrag, maar ook naar wat je kind op dat moment al wel en nog niet kan.`:'Bij deze leeftijd kijk je niet alleen naar het gedrag, maar ook naar wat je kind op dat moment al wel en nog niet kan.'; return [ageText,mechanismFrom(plan),diagnosisContext(),'Daarom bouwt dit plan rustig op: eerst deze week houvast, daarna verdiepen en bijsturen.'].filter(Boolean).join(' '); } function recognitionTextFallback(){ const n=cleanAiText(state.answers.kind)||'je kind'; const text=routeInput(); if(schoolHomeEmotionContrast()){ const child=n==='je kind'?'je kind':n; const ending=siblingRelevant()&&/slaat|slaan|schopt|duwt|bijt|pijn/.test(text)?'Als er dan ook nog een ander kind geraakt wordt, sta jij in één moment tussen begrenzen, beschermen en weer rust brengen.':'Dat verschil vraagt om eerst te kijken waar het thuis kantelt, voordat je aan algemene tips begint.'; return `Dat het op school goed gaat en thuis zo heftig kan worden, maakt het extra verwarrend en zwaar. Dat contrast zegt nog niet automatisch waardoor het komt. Bij ${child} begint de eerste stap daarom bij het concrete moment waarop het thuis zichtbaar wordt. ${ending}`; } if(siblingRelevant()&&/slaat|slaan|schopt|duwt|bijt|pijn/.test(text)){ return `Het is zwaar wanneer je tegelijk een bui moet begeleiden en een ander kind veilig wilt houden. Dan gaat het niet alleen om boos gedrag, maar ook om de snelheid waarmee het moment kantelt. Juist daarom helpt het om eerst heel precies te kijken naar de paar minuten vóór het misgaat.`; } if(/drift|bui|buien|boos|woed|ontplof|overstuur|frustr/.test(text)){ return `Wat je beschrijft klinkt als een moment waarop de spanning sneller oploopt dan je kind nog kan bijsturen. Dan lijkt het aan de buitenkant boosheid, terwijl er vaak vlak ervoor al iets te groot werd. De eerste winst zit daarom in eerder herkennen waar het kantelt.`; } return `Wat je beschrijft vraagt om een route die dicht bij jouw echte moment blijft. Niet alles tegelijk, maar eerst één patroon scherper zien en kleiner maken. Daarna kun je pas kiezen welke verdieping logisch volgt.`; } function normalizeRouteProductId(id){ return id; } function planProductIds(plan){ return [plan?.main,...(plan?.also||[])].filter(Boolean).map(normalizeRouteProductId); } function addPlanCopy(item,plan){ if(!plan||item.id!==normalizeRouteProductId(plan.main))return item; return {...item,belofte:cleanAiText(plan.promise).replace(/^In de eerste 30 minuten:\s*/i,''),week:cleanAiText(plan.week),cta:cleanAiText(plan.cta)}; } function priorityProducts(){ const text=routeInput(),ids=[]; if(schoolHomeEmotionContrast())ids.push('ws-emmertje','ws-sterk-voelen','cursus-minder-boos'); if(/slaat|slaan|schopt|duwt|bijt|pijn/.test(text)&&siblingRelevant())ids.push('ws-broer-zus'); if(hasScreenContext(text))ids.push('ws-schermtijd'); if(/slaap|slapen|bed|nacht|wakker/.test(text))ids.push('ws-slapen'); return ids; } function itemWhy(id,isStart=false){ if(isStart){ const tired=/\bmoe\b|\bop\b|schrik|uitgeput|overprikkel/.test(lower(state.answers.jij)); return tired?'Begin met een eerste stap die klein genoeg blijft om ook op een volle dag echt te proberen.':`Dit onderdeel helpt om bij ${momentLabel()} klein en concreet te beginnen.`; } const text=routeInput(); if(id==='ws-emmertje'&&schoolHomeEmotionContrast())return 'Dit past bij het contrast dat het buitenshuis lukt en thuis de spanning zichtbaar wordt.'; if(id==='ws-sterk-voelen'&&/drift|bui|buien|boos|woed|ontplof/.test(text))return 'Dit past bij de heftigheid van de buien, wanneer praten of uitleggen op dat moment weinig landt.'; if(id==='ws-broer-zus'&&siblingRelevant())return 'Dit past bij het beschermen en begeleiden wanneer de spanning tussen kinderen of richting een ander kind oploopt.'; if(id==='ws-grenzen'&&/grens|nee|strijd|luister|doordram|slaat|slaan/.test(text))return 'Dit past wanneer je tegelijk duidelijk moet blijven en de situatie niet groter wilt maken.'; if(id==='ws-kalm-blijven'&&hasParentPrikkelContext())return 'Dit past wanneer jouw eigen spanning sneller oploopt en je meer ruimte nodig hebt vóór je reageert.'; if(id==='ws-schermtijd'&&hasScreenContext(text))return 'Dit past bij stopmomenten rond schermen, waar vooraf duidelijkheid belangrijker is dan onderhandelen in het conflict.'; return catalogWhy(id); } function localRoute(){ const a=state.answers,n=a.kind||'je kind',topic=topicOf(); const options={strijd:['cursus-minder-boos','ws-emmertje','ws-sterk-voelen','ws-grenzen'],scherm:['ws-schermtijd','ws-grenzen','ws-communicatie'],gezin:['ws-broer-zus','ws-communicatie','ws-grenzen'],angst:['cursus-angst-de-baas','ws-zelfvertrouwen','cursus-weerbaarheid'],plannen:['cursus-executieve-functies','ws-executieve-functies-dagelijks','ws-huiswerk-motivatie','cursus-rust-in-huis'],bed:['cursus-rust-in-huis','ws-slapen','ws-communicatie'],ritme:['cursus-rust-in-huis','ws-dagelijkse-struggles','ws-communicatie'],puber:['cursus-pittige-pubers','ws-opstandig','ws-communicatie'],emotie:['ws-emmertje','ws-sterk-voelen','cursus-minder-boos'],breed:['cursus-rust-in-huis','ws-communicatie','ws-emmertje']}; const plan=planMatch(); const planIds=planProductIds(plan).filter(eligible); const starterId=pickStarter(); const list=[...new Set([...priorityProducts(),...planIds,...(options[topic]||options.breed),...(hasADHD()?['adhd-begrijpen','adhd-thuis']:[]),'ws-communicatie','ws-emmertje','cursus-rust-in-huis'])].filter(id=>id!==starterId).filter(eligible); const later=list.slice(0,5); const tired=/\bmoe\b|\bop\b|schrik|uitgeput|overprikkel/.test(String(a.jij||'').toLowerCase()); const item=id=>addPlanCopy({id,waarom:itemWhy(id),opbrengst:catalogChanges(id).slice(0,3)},plan); const firstStep=tired?'Kies één rustig moment om het eerste onderdeel te bekijken, zonder meteen alles toe te passen.':'Bekijk het eerste onderdeel en kies één moment waarop je wilt oefenen.'; const expertWaarom=/onderzoek|wachtlijst|ggz|wijkteam|jeugdteam|vast|schrik/.test(lower([a.diagnose,a.hulp,a.jij].join(' ')))?'Voor als er onderzoek, hulp of veel spanning meespeelt en je wilt dat een professional even concreet meekijkt.':'Voor als algemene uitleg net niet genoeg is en je wilt dat een professional concreet meekijkt.'; const startItem={...item(starterId),waarom:itemWhy(starterId,true),eerste_stap:firstStep}; if(plan?.promise)startItem.belofte=cleanAiText(plan.promise).replace(/^In de eerste 30 minuten:\s*/i,''); if(plan?.week)startItem.week=cleanAiText(plan.week); if(plan?.cta)startItem.cta=cleanAiText(plan.cta); return {focus:`Deze week begin je klein bij ${momentLabel()}.`,herkenning:recognitionTextFallback(),verhaal:planStory(plan),nu:startItem,daarna:later.slice(0,2).map(item),verder:later.slice(2,5).map(item),terugval:{id:'expertchat',waarom:expertWaarom},voorJou:{id:'meditaties',waarom:'Een optionele extra voor een rustig moment, buiten je plan.'},doelen:localGoals(n),herinneringen:localReminders(n),plan_key:plan?.key||''}; } function sanitize(r){ const fallback=localRoute();if(!r||typeof r!=='object')return fallback; const seen=new Set(); const safeText=(v,def)=>{const text=cleanAiText(v);return text&&!unsupportedContext(text)?text:def;}; const safeList=(list,defs)=>{const out=(Array.isArray(list)?list:[]).map(cleanAiText).filter(x=>/^ik\b/i.test(x)).slice(0,3);for(const item of defs){if(out.length===3)break;if(!out.includes(item))out.push(item);}return out;}; const safeReminders=(list,defs)=>{const out=(Array.isArray(list)?list:[]).map(x=>({tijd:cleanAiText(x?.tijd),titel:cleanAiText(x?.titel),tekst:cleanAiText(x?.tekst)})).filter(x=>x.tekst).slice(0,3);for(const item of defs){if(out.length===3)break;out.push(item);}return out;}; const clean=(x,kind)=>{ if(!x||typeof x!=='object'||typeof x.id!=='string'||!eligible(x.id)||seen.has(x.id))return null; if(kind==='start' && !STARTERS.includes(x.id))return null; if(kind==='lesson'&&!isLes(x.id))return null; if(kind==='later'&&!(isLes(x.id)||catalogKind(x.id)==='ADHD-bibliotheek'))return null; if(kind==='end'&&!['expertchat','community'].includes(x.id))return null; seen.add(x.id); const cleaned={id:x.id,waarom:safeText(x.waarom,itemWhy(x.id,kind==='start')),opbrengst:catalogChanges(x.id).slice(0,3),...(kind==='start'?{eerste_stap:safeText(x.eerste_stap,fallback.nu.eerste_stap)}:{})}; if(kind==='start'&&fallback.nu?.id===x.id){ if(fallback.nu.belofte)cleaned.belofte=safeText(x.belofte,fallback.nu.belofte); if(fallback.nu.week)cleaned.week=safeText(x.week,fallback.nu.week); if(fallback.nu.cta)cleaned.cta=safeText(x.cta,fallback.nu.cta); } return cleaned; }; const nu=clean(r.nu,'start')||clean(fallback.nu,'start'); const daarna=(Array.isArray(r.daarna)?r.daarna:[]).map(x=>clean(x,'lesson')).filter(Boolean).slice(0,2); if(!daarna.length)for(const x of fallback.daarna){const y=clean(x,'lesson');if(y){daarna.push(y);break;}} const verder=[]; for(const x of [...(Array.isArray(r.verder)?r.verder:[]),...fallback.verder,...fallback.daarna]){if(verder.length===3)break;const y=clean(x,'later');if(y)verder.push(y);} const terugval=clean(r.terugval,'end')||clean(fallback.terugval,'end'); const doelen=safeList(r.doelen,fallback.doelen); const herinneringen=safeReminders(r.herinneringen,fallback.herinneringen); return {...fallback,nu,daarna,verder,terugval,doelen,herinneringen,focus:safeText(r.focus,fallback.focus),herkenning:safeText(r.herkenning,fallback.herkenning),verhaal:safeText(r.verhaal,fallback.verhaal)}; } let restoredSavedRoute=false; if(!window.RIO_PREVIEW_EIND&&!new URLSearchParams(window.location.search).has('eind')){ try{ const navigation=performance.getEntriesByType?.('navigation')?.[0]; const mayRestore=navigation?.type==='back_forward'; const saved=mayRestore?JSON.parse(sessionStorage.getItem(SAVED_ROUTE_KEY)||'null'):null; if(saved?.route&&saved?.answers&&Date.now()-Number(saved.saved_at||0)<24*60*60*1000){ restoredSavedRoute=true; setTimeout(()=>{state.answers=saved.answers;route=sanitize(saved.route);assistent.classList.add('rio-actief');berichten.replaceChildren();showRoute({route});},120); }else if(!mayRestore){ sessionStorage.removeItem(SAVED_ROUTE_KEY); } }catch{} } if(!restoredSavedRoute&&!window.RIO_PREVIEW_EIND&&new URLSearchParams(window.location.search).has('eind')){ setTimeout(()=>{ state.answers={ probleem:'Mijn dochter van 8 slaat haar broertje soms als het thuis oploopt. Op school gaat het goed, maar thuis is het vaak zwaar.', kind:'Laura', leeftijd:'8 jaar', doorvraag:'Vooral na school of wanneer haar broertje dichtbij komt en er meteen iets van haar gevraagd wordt.', geprobeerd:'Rustig uitleggen, begrenzen en haar even apart nemen. Soms helpt het kort, maar het patroon komt terug.', oudergevoel:'Ik merk dat ik dan gespannen raak en soms harder reageer dan ik wil.', eerste_anders:'Sneller terug naar rust' }; route=sanitize(localRoute()); assistent.classList.add('rio-actief'); berichten.replaceChildren(); showRoute({route}); },120); } })(); })();