
        /* ------------ tokens (consistent met sneltoetser.nl landing) ------------ */
        :root {
            --vng-dark: #002C64;
            /* UX-CONTRAST (WCAG AA): de eerdere lichte accentkleur haalde
               slechts ~2,64:1 op wit — onder de 4,5:1-grens. Vervangen door
               een donkerder tint die ~5,9:1 op wit haalt (passeert AA voor
               normale tekst én voor witte tekst op gekleurde CTA-knoppen).
               Visueel nog herkenbaar als "VNG-accent-blauw" maar contrastvriendelijk. */
            --vng-light: #0072B8;
            --vng-deep: #001a3d;
            --ink: #1a1a2e;
            --ink-muted: #6c7280;
            --bg-soft: #f4faff;
            --bg-page: #eef4fa;
            --border: #d8e3ef;
            --amber: #f59e0b;
            --green: #2e7d32;
            --red: #c62828;
            --orange: #e65100;
            --radius: 14px;
            --shadow: 0 2px 12px rgba(0, 44, 100, 0.08);
        }
        * { box-sizing: border-box; margin: 0; padding: 0; }
        body {
            font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
            background: var(--bg-page); color: var(--ink); line-height: 1.55;
            -webkit-font-smoothing: antialiased;
        }
        a { color: var(--vng-light); text-decoration: none; }
        a:hover { text-decoration: underline; }

        /* ------------ topbar ------------ */
        .topbar {
            background: var(--vng-dark); color: #fff; padding: 14px 0;
            border-bottom: 3px solid var(--vng-light);
        }
        .topbar-inner {
            max-width: 1280px; margin: 0 auto; padding: 0 24px;
            display: flex; align-items: center; justify-content: space-between;
        }
        .brand { display: flex; align-items: center; gap: 12px; color: #fff; }
        .brand:hover { text-decoration: none; }
        .brand-mark {
            background: var(--vng-light); color: var(--vng-dark);
            width: 36px; height: 36px; border-radius: 8px;
            font-weight: 800; font-size: 18px;
            display: flex; align-items: center; justify-content: center;
        }
        .brand-name { font-size: 18px; font-weight: 700; letter-spacing: -.02em; }
        .topbar a.back { color: #cce8ff; font-size: 14px; }
        .topbar a.back:hover { color: #fff; text-decoration: none; }
        .topbar-rechts { display: flex; align-items: center; gap: 18px; }
        .ai-status {
            background: rgba(255,255,255,0.10);
            padding: 5px 11px;
            border-radius: 14px;
            font-size: 12px;
            color: #cce8ff;
            cursor: help;
            white-space: nowrap;
            border: 1px solid rgba(255,255,255,0.15);
        }
        .ai-status.actief { background: rgba(46, 160, 67, 0.18); color: #b6f0c1; border-color: rgba(46, 160, 67, 0.4); }
        .ai-status.mock   { background: rgba(255,255,255,0.10); color: #cce8ff; }
        @media (max-width: 720px) { .ai-status { display: none; } }

        /* ------------ page header ------------ */
        .page-header {
            max-width: 1280px; margin: 0 auto; padding: 36px 24px 12px;
        }
        .page-header h1 {
            font-size: 32px; color: var(--vng-dark); letter-spacing: -.02em;
            margin-bottom: 6px;
        }
        .page-header .sub {
            font-size: 16px; color: var(--ink-muted); max-width: 720px;
        }

        /* ------------ layout: 2 kolommen asymmetrisch (vraag breed + paneel rechts) ------------ */
        /* UX-onderzoek 2026-06 — Optie 1: minmax(0, 1fr) + 320px,
           geen permanente linker-kolom (dekking-chips verhuizen naar collapsible footer). */
        .layout {
            max-width: 1280px; margin: 0 auto; padding: 20px 24px 60px;
            /* FIX HOOG-ANTWOORDEN-DUBBEL-ONDERBOUWING (Owner 2026-06-26): rechter-
               kolom (💬 Antwoorden-paneel) BREDER — 320px -> 380px — nu het de enige
               plek is waar de gegeven antwoorden staan (Onderbouwing-duplicaat weg). */
            display: grid; grid-template-columns: minmax(0, 1fr) 380px; gap: 24px;
            align-items: start;
        }
        @media (max-width: 1024px) {
            .layout { grid-template-columns: 1fr; gap: 18px; }
            .dashboard-rechts { order: 3; }
            .page-header { padding-top: 24px; }
            .page-header h1 { font-size: 26px; }
        }
        /* FIX UX-MOBIEL-EEN-DING (Grader 2026-06-10 MIDDEN): op mobiel één
           ding tegelijk — actieve vraagkaart krijgt extra ademruimte + grotere
           typografie zodat hij dominant is, en de analyse-log/dashboard staan
           onder de vouw (al order:3). Voorkomt 'overal-tegelijk'-gevoel. */
        @media (max-width: 600px) {
            .layout { padding: 14px 14px 80px; gap: 14px; }
            .card { padding: 14px 16px; }
            #vraagkaart, #vraag-kaart, .vraagkaart {
                padding: 18px 18px 20px; font-size: 16px;
            }
            .vraag-tekst, .vraag-tekst h2, h2.vraag-titel {
                font-size: 19px; line-height: 1.4;
            }
            .stappen-wrap, .stappen-mode { font-size: 13px; }
            .dashboard-rechts { margin-top: 8px; }
            .dashboard-rechts details > summary { padding: 10px 12px; font-size: 14px; }
        }
        /* In 2-koloms layout zit instructie + voorbeelden in collapsible footer onderin, niet in grid.
           NB: de juridische disclaimer staat NIET (meer) in deze aside — die wordt permanent
           getoond in de resultaten-kaart (R3-KRIT-1) en is dus altijd zichtbaar, ongeacht layout. */
        .instructie { display: none; }

        /* ------------ Grondslag-link (universele BWB-deeplink) ------------ */
        .vraag-grondslag .grondslag-link {
            color: var(--vng-light);
            text-decoration: none;
            font-weight: 500;
            font-size: 12px;
        }
        .vraag-grondslag .grondslag-link:hover { text-decoration: underline; }

        /* ------------ "Snelle check" vs "Mét toelichting" modes ------------ */
        .modes-toggle {
            display: flex; gap: 4px; padding: 3px;
            background: #f0f4f8; border-radius: 20px;
            font-size: 12px; align-items: center;
        }
        .modes-toggle button {
            background: transparent; border: none; cursor: pointer;
            padding: 5px 12px; border-radius: 16px;
            color: var(--ink-muted); font-weight: 500;
            transition: all .15s;
        }
        .modes-toggle button.actief {
            background: #fff; color: var(--vng-dark);
            box-shadow: 0 1px 3px rgba(0,0,0,0.08);
        }
        /* In "Snelle check"-modus: verberg uitgebreide toelichtingen */
        body.mode-snel .vraag-grondslag,
        body.mode-snel .vraag-toelichting,
        body.mode-snel .vraag-grondslag-uitklap {
            display: none;
        }
        body.mode-snel .acties-omschrijving,
        body.mode-snel .acties-grondslag {
            display: none;
        }

        /* ------------ Overgeslagen-vragen-melding ------------ */
        .overgeslagen-melding {
            background: #e8f5e9;
            border-left: 3px solid var(--green);
            padding: 8px 12px;
            border-radius: 0 8px 8px 0;
            margin-bottom: 16px;
            font-size: 13px;
            color: #1b5e20;
        }
        .overgeslagen-melding b { color: var(--vng-dark); }

        /* ------------ dekking-footer (collapsible) ------------ */
        .dekking-footer {
            max-width: 1280px; margin: 18px auto 0; padding: 0 24px;
        }
        .dekking-footer details {
            background: #fff; border: 1px solid var(--border); border-radius: 12px;
            padding: 12px 16px;
        }
        .dekking-footer summary {
            cursor: pointer; font-weight: 500; color: var(--vng-dark);
            list-style: none; user-select: none;
        }
        .dekking-footer summary::-webkit-details-marker { display: none; }
        .dekking-footer summary::after { content: "  ▾"; color: var(--ink-muted); font-size: 12px; }
        .dekking-footer details[open] summary::after { content: "  ▴"; }
        .dekking-footer-inhoud { margin-top: 12px; }
        .dekking-footer-inhoud .groep-titel {
            font-size: 11px; text-transform: uppercase; letter-spacing: 0.6px;
            color: var(--ink-muted); margin: 10px 0 4px;
        }
        /* HOOG-KADER-PUNT10-AANNAMES-ZICHTBAAR — "Waar we van uitgingen" (EINDBESLUIT §10).
           Staat in de resultaat-kolom (#aannames-container), niet in .dashboard-rechts. */
        .aannames-blok {
            margin-top: 16px; background: #fff; border: 1px solid var(--border);
            border-left: 4px solid var(--vng-light); border-radius: 12px; padding: 12px 16px;
        }
        .aannames-blok > summary {
            cursor: pointer; font-weight: 700; color: var(--vng-dark); font-size: 15px;
        }
        .aannames-intro {
            margin: 10px 0 4px; font-size: 13px; line-height: 1.55; color: var(--ink-muted);
        }
        .aannames-groep { margin-top: 12px; }
        /* FIX PROCES-LAYOUT-TEST-BLINDE-VLEK / PD-LAYOUT-2 × EINDBESLUIT §10 —
           reconciliatie van twee owner-mandaten die alleen OP HET SCHERM botsen.
           De 'Uw eigen antwoorden'-groep (bron=antwoord) toont de door de burger
           zelf gegeven wizard-antwoorden. Die staan op het scherm al 1× in het
           rechterkolom 💬 antwoordenpaneel (#dash-antwoorden). Een tweede kopie
           hier schendt PD-LAYOUT-2 ("elk antwoord PRECIES 1× op het scherm; alleen
           het rechterkolom-antwoordenpaneel"). Maar @media print verbergt
           .dashboard-rechts, dus in de PDF is dit aannames-blok de ENIGE plek waar
           de antwoorden staan — en §10/§10c eisen dat elk oordeel-dragend feit
           meeprint. Oplossing: bron=antwoord is SCHERM-verborgen, PRINT-zichtbaar
           (zie de @media print-regel). De DATA (bouw_aannames-groep +
           controleer_aannames_dekking) blijft ONGEWIJZIGD — de fail-closed
           dekkings-invariant blijft groen; alleen de scherm-render wijzigt.
           Afgeleide groepen (verhaal/kaart/open_data/dso) blijven op het scherm
           zichtbaar: dát zijn de niet-gevraagde aannames die de §10b-vals-vrij-
           vangrail vormen. Antwoorden zijn op het scherm corrigeerbaar via de
           wizard-'bewerk'-knop; op print via het loket-gesprek. */
        .aannames-groep-antwoord { display: none; }
        .aannames-groep h4 {
            margin: 0 0 4px; font-size: 12px; text-transform: uppercase;
            letter-spacing: .04em; color: var(--ink-muted); font-weight: 700;
        }
        .aanname-tag {
            text-transform: none; letter-spacing: 0; font-weight: 700; font-size: 11px;
            background: #fff3e0; color: var(--orange); border-radius: 10px; padding: 1px 8px;
        }
        .aannames-tabel { width: 100%; border-collapse: collapse; font-size: 13px; }
        .aannames-tabel td { padding: 5px 8px 5px 0; border-bottom: 1px solid var(--border); vertical-align: top; }
        .aannames-tabel .aanname-feit { color: var(--vng-dark); font-weight: 600; width: 32%; }
        .aannames-tabel .aanname-waarde { color: var(--ink); width: 22%; }
        .aannames-tabel .aanname-reden { color: var(--ink-muted); font-size: 12px; }
        /* §10b correctie-route: de actie-kolom. De knop is bewust rustig (geen
           call-to-action-kleur) — hij hoort beschikbaar te zijn, niet te lokken. */
        .aannames-tabel .aanname-actie { width: 16%; text-align: right; white-space: nowrap; }
        .aanname-corr {
            background: none; border: 1px solid var(--border); border-radius: 4px;
            color: var(--vng-dark); font-size: 12px; padding: 2px 8px; cursor: pointer;
        }
        .aanname-corr:hover { background: var(--bg-soft, #f1f5f9); }
        .aanname-meld { color: var(--ink-muted); font-size: 12px; font-style: italic; cursor: help; }
        @media (max-width: 600px) {
            .aannames-tabel, .aannames-tabel tbody, .aannames-tabel tr, .aannames-tabel td { display: block; width: 100% !important; }
            .aannames-tabel tr { border-bottom: 1px solid var(--border); padding: 6px 0; }
            .aannames-tabel td { border: none; padding: 1px 0; }
        }

        .dashboard-rechts { display: flex; flex-direction: column; gap: 12px; position: sticky; top: 12px; }
        .dashboard-rechts .panel {
            background: #fff; border: 1px solid var(--border); border-radius: 12px;
            padding: 14px 16px; box-shadow: 0 1px 3px rgba(0,0,0,0.04);
        }
        .dashboard-rechts h3 {
            font-size: 12px; text-transform: uppercase; letter-spacing: 0.6px;
            color: var(--ink-muted); margin: 0 0 8px 0; font-weight: 600;
        }
        .dashboard-rechts .dash-item {
            display: flex; align-items: flex-start; gap: 6px;
            font-size: 13px; line-height: 1.45; padding: 3px 0;
        }
        .dashboard-rechts .dash-item .dash-key { color: var(--ink-muted); flex: 1; min-width: 0; word-break: break-word; }
        .dashboard-rechts .dash-item .dash-val { color: var(--vng-dark); font-weight: 500; text-align: right; max-width: 60%; word-break: break-word; }
        .dashboard-rechts .dash-icon { color: var(--green); font-size: 14px; flex-shrink: 0; }
        .dashboard-rechts .dash-icon-no { color: #c62828; }
        .dashboard-rechts .dash-icon-loading { color: var(--orange); }
        .dashboard-rechts .dash-empty { color: var(--ink-muted); font-style: italic; font-size: 12px; }
        .dashboard-rechts .dash-link { color: var(--vng-light); font-size: 12px; text-decoration: none; }
        .dashboard-rechts .dash-link:hover { text-decoration: underline; }
        .dekking-chip {
            display: inline-block; padding: 2px 8px; margin: 2px 3px 2px 0;
            border-radius: 10px; font-size: 11px;
            background: #eef2f7; color: var(--vng-dark);
        }
        .dekking-chip.actief { background: var(--vng-dark); color: #fff; }
        .lagen-status {
            display: grid; grid-template-columns: 1fr; gap: 4px; font-size: 12px;
        }
        .laag-rij { display: flex; justify-content: space-between; padding: 4px 0; }
        .laag-rij .laag-naam { color: var(--ink-muted); }
        .laag-rij .laag-status { font-weight: 500; }
        .laag-status-ok { color: var(--green); }
        .laag-status-wachten { color: var(--orange); }
        .laag-status-down { color: #c62828; }
        /* FIX HOOG-BWB-BADGE-STATISCH-DECORATIEF-SUGGEREERT-LIVE-VERIFICATIE-EERLIJK-ETIKET-
           FILING258W: een rij die GEEN per-run verificatie achter zich heeft mag niet dezelfde
           groene ✓-vorm dragen als een rij die wél gemeten wordt (#laag-dso, #laag-claude).
           Neutrale, niet-groene vorm; de title zegt wat de rij dan wél betekent. */
        .laag-status-statisch { color: var(--ink-muted); font-weight: 400; }
        /* OWNER-VERZOEK 11-09: de letterlijke CVDR-titels onder de rij, zichtbaar en niet
           alleen als tooltip. Klein en rustig — het is naslag, geen kop. */
        .laag-cvdr-titels { margin: 2px 0 6px 0; padding-left: 2px; font-size: 0.82em;
                            line-height: 1.35; color: var(--ink-muted); }
        .laag-cvdr-titels .cvdr-titel { display: block; }
        .laag-cvdr-titels .cvdr-id { opacity: 0.75; }
        .laag-cvdr-titels .cvdr-titelonly { font-style: italic; }
        /* OWNER-EIS FILING 461: "bij echte onbereikbaar moet hij rechtsonder in beeld
           duidelijk maken bij actieve lagen dat er ook lagen niet bereikt zijn". De
           samenvattende regel staat BOVEN de datagedreven rijen en is de enige rij in dit
           paneel die een waarschuwingsvorm draagt — hij verschijnt alleen als er ook echt
           een laag niet 'ok' is. */
        .lagen-uitval-kop { margin: 4px 0 2px 0; padding: 4px 6px; border-radius: 4px;
                            background: #fdecea; color: #b3261e; font-size: 0.84em;
                            line-height: 1.35; font-weight: 600; }
        .lagen-overlay-rij .laag-naam { font-size: 0.95em; }
        .lagen-overlay-rij .laag-status { font-size: 0.9em; }

        /* ------------ left: instructie — verborgen (zie regel 102/105).
           De HTML-aside blijft staan zodat de oude content opvraagbaar is
           voor evt. toekomstige toggle, maar dispalys NIET in de layout. */

        .panel {
            background: white; border-radius: var(--radius);
            box-shadow: var(--shadow); padding: 22px;
        }
        .panel-soft { background: var(--bg-soft); border: 1px solid var(--border); }

        .panel h2 {
            font-size: 14px; color: var(--vng-dark);
            text-transform: uppercase; letter-spacing: .08em; font-weight: 700;
            margin-bottom: 14px;
        }

        .stappen-uitleg { list-style: none; }
        .stappen-uitleg li {
            display: flex; align-items: flex-start; gap: 12px;
            margin-bottom: 16px; font-size: 14px; line-height: 1.55;
        }
        .stappen-uitleg li:last-child { margin-bottom: 0; }
        .stap-num {
            background: var(--vng-dark); color: white;
            width: 28px; height: 28px; border-radius: 50%;
            display: flex; align-items: center; justify-content: center;
            font-weight: 700; font-size: 13px; flex-shrink: 0;
        }
        .stap-num.accent { background: var(--vng-light); }
        .stap-tekst strong { color: var(--vng-dark); }
        .stap-tekst small { display: block; font-size: 12px; color: var(--ink-muted); margin-top: 2px; }

        .voorbeelden { display: flex; flex-direction: column; gap: 8px; }
        .voorbeeld-knop {
            text-align: left; padding: 12px 14px;
            background: white; border: 1.5px solid var(--border); border-radius: 10px;
            cursor: pointer; transition: all .15s; font: inherit; color: var(--ink);
        }
        .voorbeeld-knop:hover {
            border-color: var(--vng-light); background: var(--bg-soft);
            transform: translateX(2px);
        }
        .voorbeeld-knop strong {
            display: block; font-size: 14px; color: var(--vng-dark); margin-bottom: 2px;
        }
        .voorbeeld-knop span { font-size: 12px; color: var(--ink-muted); }

        .disclaimer-list { list-style: none; font-size: 13px; }
        .disclaimer-list li {
            position: relative; padding-left: 22px; margin-bottom: 8px; color: var(--ink-muted);
        }
        .disclaimer-list li::before {
            content: '•'; position: absolute; left: 6px; top: 0;
            color: var(--vng-light); font-weight: 800; font-size: 16px;
        }
        .disclaimer-list li:last-child { margin-bottom: 0; }
        .disclaimer-list strong { color: var(--ink); font-weight: 600; }

        /* ------------ right: actie + resultaat ------------ */
        .actie { display: flex; flex-direction: column; gap: 16px; }

        .form-card { background: white; border-radius: var(--radius); box-shadow: var(--shadow); padding: 28px; }
        .form-card h2 {
            font-size: 18px; color: var(--vng-dark); margin-bottom: 18px;
            display: flex; align-items: center; gap: 10px;
        }
        .form-card h2 .step-pill {
            background: var(--vng-light); color: white;
            font-size: 11px; padding: 3px 10px; border-radius: 10px;
            text-transform: uppercase; letter-spacing: .05em;
        }
        label {
            display: block; font-weight: 600; margin-bottom: 6px;
            font-size: 13px; color: var(--vng-dark);
        }
        label .required { color: var(--orange); }
        textarea, input[type="text"], input[type="number"] {
            width: 100%; padding: 14px 16px;
            border: 2px solid var(--border); border-radius: 10px;
            font-size: 16px; font-family: inherit;
            transition: border-color .15s, background .15s;
            background: var(--bg-soft); color: var(--ink);
        }
        /* FIX WCAG-2.4.7-FOCUS-ONZICHTBAAR-OP-TEKSTVELDEN (audit ronde 19): hier stond
           `outline: none` op :focus. Die selector (specificiteit 0,1,1) verslaat de
           :focus-visible-regel elders (0,1,0), waardoor de ontworpen focusring op GEEN enkel
           tekstveld werkte — toetsenbordgebruikers zagen niet waar ze stonden. De outline mag
           weg zolang er een even zichtbare vervanging staat; die staat er nu (ring van 3px). */
        textarea:focus, input:focus {
            border-color: var(--vng-light); background: white;
            outline: 3px solid var(--vng-light); outline-offset: 1px;
        }
        /* FIX UX-INVULVELDEN (Grader-prio 1): textarea fors vergroot — was 88px
           (≈3 regels), nu 180px (≈7-8 regels) zodat de gebruiker meteen ziet
           dat hier een vrij verhaal hoort. Adresveld krijgt grotere padding +
           font via de generieke regel hierboven (15→16px, padding 12→14px). */
        textarea { resize: vertical; min-height: 220px; line-height: 1.5; font-size: 17px; }
        /* PRIO 2026-06-09: invulvelden centraal + groot. Form-card pakt
           comfortabel de hoofdkolom; max-width houdt 'm leesbaar op breed scherm. */
        .form-card { max-width: 720px; padding: 28px 32px; }
        .form-card h2 { font-size: 22px; margin-bottom: 18px; }
        .form-card label { font-size: 15px; font-weight: 600; }
        .field { margin-bottom: 16px; }
        .field:last-of-type { margin-bottom: 22px; }

        .btn {
            display: inline-block; padding: 14px 28px;
            background: var(--vng-dark); color: white; border: none;
            border-radius: 10px; font-size: 15px; font-weight: 600; cursor: pointer;
            transition: background .15s, transform .1s;
        }
        .btn:hover { background: var(--vng-deep); transform: translateY(-1px); }
        .btn:disabled { opacity: .5; cursor: not-allowed; transform: none; }
        .btn-block { display: block; width: 100%; }
        .btn-arrow::after { content: ' →'; }

        /* ------------ captcha-card ------------ */
        .captcha-card {
            background: var(--bg-soft); border: 2px solid var(--vng-light);
            border-radius: var(--radius); padding: 24px; text-align: center;
            animation: fadeIn .25s ease;
        }
        .captcha-card h2 { font-size: 18px; color: var(--vng-dark); margin-bottom: 8px; }
        .captcha-card p { font-size: 14px; color: var(--ink-muted); margin-bottom: 16px; }

        /* ------------ result blocks ------------ */
        .card { background: white; border-radius: var(--radius); box-shadow: var(--shadow); padding: 22px; }
        .card h2 { font-size: 16px; color: var(--vng-dark); margin-bottom: 12px; }

        /* Analyse-ticker: DOORLOPENDE marquee — de chips bewegen continu van
           links naar rechts. #stappen = viewport (overflow hidden + fade-rand);
           .stappen-track bevat TWEE identieke kopieën zodat de loop naadloos is
           (translateX van -50% naar 0 = beweging naar rechts). Bewust altijd
           bewegend (ook bij reduce-motion): het is een expliciet gevraagde,
           informatieve bewegende banner; pauzeert wel on-hover. */
        .stappen {
            overflow: hidden; padding: 2px 0 6px;
            -webkit-mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
                    mask-image: linear-gradient(90deg, transparent, #000 7%, #000 93%, transparent);
        }
        .stappen-track {
            display: flex; width: max-content;
            animation: stappen-marquee 24s linear infinite;
        }
        .stappen:hover .stappen-track { animation-play-state: paused; }
        .stappen-copy { display: flex; gap: 8px; padding-right: 8px; flex: 0 0 auto; }
        @keyframes stappen-marquee {
            from { transform: translateX(-50%); }
            to   { transform: translateX(0); }
        }
        .stap {
            display: inline-flex; align-items: center; gap: 8px;
            padding: 8px 13px; border-radius: 999px; font-size: 13px;
            white-space: nowrap; flex: 0 0 auto;
        }

        /* FIX UX-TOEGANKELIJKHEID (Grader-prio 6, WCAG 2.2): visually-hidden
           class voor <legend> die wel door screenreaders wordt voorgelezen,
           maar niet zichtbaar is (vraag staat al in <h3>). */
        .sr-only {
            position: absolute !important; width: 1px; height: 1px;
            padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0);
            white-space: nowrap; border: 0;
        }

        /* FIX UX-TOEGANKELIJKHEID: <fieldset> default-styling (border + padding)
           visueel resetten — de fieldset is alleen voor a11y, niet voor look. */
        .opties-fieldset {
            border: 0; padding: 0; margin: 0; min-width: 0;
        }

        /* FIX UX-TOEGANKELIJKHEID (WCAG 2.3.3): respecteer prefers-reduced-motion.
           Animaties + transitions worden vrijwel uit gezet voor users met die
           voorkeur (vestibulaire / migraine-overwegingen). */
        @media (prefers-reduced-motion: reduce) {
            *, *::before, *::after {
                animation-duration: 0.01ms !important;
                animation-iteration-count: 1 !important;
                transition-duration: 0.01ms !important;
                scroll-behavior: auto !important;
            }
        }
        .stap-auto { background: #e8f5e9; }
        .stap-locatie { background: #e3f2fd; }
        .stap-ok { background: #e8f5e9; }
        .stap-waarschuwing { background: #fff3e0; }
        .stap-info { background: #e8eaf6; }
        .stap-fout { background: #fce4ec; }
        .stap-vraag { background: #fff8e1; }
        .stap-icon { font-size: 18px; flex-shrink: 0; }

        .vraag-card {
            background: var(--bg-soft); border: 2px solid var(--vng-light);
            border-radius: var(--radius); padding: 22px; margin-top: 12px;
            animation: fadeIn .3s ease;
        }
        .vraag-card h3 { color: var(--vng-dark); margin-bottom: 6px; font-size: 16px; }
        .vraag-nummer {
            display: inline-block; background: var(--vng-light); color: white;
            width: 26px; height: 26px; line-height: 26px; text-align: center;
            border-radius: 50%; font-size: 12px; font-weight: 700; margin-bottom: 8px;
        }
        .vraag-toelichting {
            font-size: 13px; color: var(--ink-muted); margin: 8px 0 14px;
            padding: 8px 12px; background: white; border-radius: 6px;
            border-left: 3px solid var(--vng-light);
        }
        .vraag-grondslag {
            font-size: 11px; color: var(--ink-muted); margin-bottom: 10px; font-style: italic;
            /* FIX UX-TEKST-LIJN (Grader 2026-06-12): voorkom overlap tussen
               toelichtings-tekst en omliggende linker-rand-lijn / horizontale
               separators door expliciete witte achtergrond + lichte padding,
               en isolation om z-index-conflicten met dashboard-lijnen op te heffen. */
            background: #fff;
            padding: 8px 10px;
            border-radius: 6px;
            position: relative; z-index: 1; isolation: isolate;
        }
        .waarom-uitleg { font-style: normal; color: var(--ink); }
        /* FIX ILLUSTRATIES (Grader-prio 9): SVG-illustraties bij ruimtelijke
           vragen helpen leken de juridische open normen (dakvlak voor/achter,
           achtererfgebied, schutting-zone, etc.) correct te classificeren
           zonder dat de tool valse zekerheid hoeft te creëren uit vrije tekst. */
        .vraag-illustratie {
            display: block; max-width: 320px; width: 100%; height: auto;
            margin: 6px 0 12px; border-radius: 8px;
            background: #fff; border: 1px solid var(--border);
            padding: 8px;
        }
        body.mode-snel .vraag-illustratie { display: none; }

        /* FIX UX-RESULTAAT (Grader-prio 5): print-CSS. Verbergt navigatie,
           formulier-controls, dashboard-rechts. De conclusie-card + jouw-
           antwoorden-card + samenvatting-banner blijven. */
        /* FIX UX-TOEGANKELIJKHEID (Grader-prio 6, WCAG 2.2.1 + 2.4.7):
           skip-to-content link + zichtbare focus-styles op alle interactieve
           elementen. Voldoet aan AA 'visible focus indicator'. */
        .skip-link {
            position: absolute; left: -9999px; top: 0;
            background: var(--vng-dark); color: #fff;
            padding: 10px 14px; border-radius: 0 0 8px 0;
            font-weight: 600; text-decoration: none; z-index: 999;
        }
        .skip-link:focus { left: 0; }
        :focus-visible {
            outline: 3px solid var(--vng-light);
            outline-offset: 2px; border-radius: 4px;
        }
        button:focus-visible, a:focus-visible, .btn-optie:focus-visible {
            outline-offset: 3px;
        }
        /* Hoog contrast voor de getoonde knoplabels (was te licht voor AA bij sommige browsers) */
        .btn-optie:hover { background: #eff6ff; color: var(--vng-dark); }

        @media print {
            body { background: #fff; color: #000; }
            .nav, .page-header, #invoer-card, #captcha-card, .dekking-footer,
            .dashboard-rechts, .print-acties, .no-print, .modes-toggle,
            .opnieuw, .vraag-illustratie, .afkortingen-glossary,
            /* FIX HOOG-PRINT-PDF-LEGE-PAGINAS (Grader 2026-06-16): de kaart, de
               Analyse-/voortgangslog en de wizard-vragenflow horen NIET in de
               PDF — ze stonden niet in de verberg-lijst en vulden ~2 lege
               pagina's vooraan. De conclusie zit in #eind-mode (sibling) en
               blijft dus staan. */
            #kaart-paneel, #stappen, #wizard-mode { display: none !important; }
            .layout { grid-template-columns: 1fr !important; padding: 0 !important; max-width: 100% !important; }
            .card { box-shadow: none !important; border: 1px solid #cbd5e1 !important; page-break-inside: avoid; }
            a { text-decoration: underline; color: #002C64 !important; }
            .conclusie-tabel { border-collapse: collapse; }
            .conclusie-tabel th, .conclusie-tabel td { border: 1px solid #cbd5e1; padding: 6px 8px; }
            /* FIX HOOG-PRINT-CONCLUSIE-ONVOLLEDIG-EN-KNOP: print pakte maar 'een
               stukje' doordat toelichtingen in Snel-modus + collapsed <details>
               verborgen zijn. Forceer ALLE toelichtingen/expanders zichtbaar,
               ongeacht modus, zodat de volledige conclusie meeprint. */
            body.mode-snel .vraag-toelichting,
            body.mode-snel .vraag-grondslag,
            body.mode-snel .vraag-grondslag-uitklap,
            body.mode-snel .acties-omschrijving,
            body.mode-snel .acties-grondslag { display: block !important; }
            /* FIX HOOG-PRINT-PDF-LEGE-PAGINAS (Grader 2026-06-16): de oude regel
               'details > :not(summary)' klapte ELKE <details> op de pagina open
               -> ruis/witruimte. Scope tot de conclusie + acties zodat alleen
               de relevante uitklap-inhoud meeprint. */
            details.conclusie-meer > .conclusie-meer-inhoud,
            .acties-container details > :not(summary) { display: block !important; }
            /* FIX HOOG-KADER-PUNT10-AANNAMES-ZICHTBAAR (EINDBESLUIT §10) — HARD ANKER.
               De aanname-verantwoording zat vóór deze fix UITSLUITEND in `.dashboard-rechts`
               (de verberg-regel hierboven), dus de PDF bevatte NUL aannames: precies het
               document dat het gesprek bij het loket moet dragen ("wij gingen uit van...").
               #aannames-container staat daarom in de resultaat-kolom. Forceer de inhoud
               open, ook als de burger 'm had dichtgeklapt — een collapsed <details> print
               anders als kaal kopje. */
            #aannames-container .aannames-blok > :not(summary) { display: block !important; }
            /* De 'Uw eigen antwoorden'-groep is op het SCHERM verborgen (staat daar
               in het 💬-paneel, dat niet print) — maar hoort WÉL in de PDF, want
               .dashboard-rechts print niet. §10/§10c: elk oordeel-dragend feit
               meeprint. Deze regel maakt de scherm-verborgen groep print-zichtbaar. */
            #aannames-container .aannames-groep-antwoord { display: block !important; }
            #aannames-container .aannames-blok { page-break-inside: avoid; border: 1px solid #cbd5e1; }
            #aannames-container .aannames-tabel td { border-bottom: 1px solid #cbd5e1; }
            /* §10b: de correctie-knop is een scherm-actie. Op papier is 'Klopt niet?'
               een dode knop die alleen de kolom vult; de aanname zelf (en dus het
               loket-gesprek) blijft gewoon staan. */
            #aannames-container .aanname-actie { display: none !important; }
            details summary { font-weight: 600; }
            /* FIX HOOG-PRINT-CONCLUSIE-TABEL-LAYOUT-GESTAPELD: een 4-koloms
               table-layout:fixed perste de lange Toelichting in 25% (krappe,
               rafelige kolom) terwijl Status 25% verspilde. Render de conclusie
               als gestapelde blokken: Activiteit als kop + Status-badge,
               daaronder Toelichting en Grondslag op VOLLE breedte met labels. */
            .conclusie-tabel thead { display: none; }
            .conclusie-tabel, .conclusie-tabel tbody, .conclusie-tabel tr, .conclusie-tabel td { display: block; width: 100% !important; }
            .conclusie-tabel tr { border: 1px solid #cbd5e1; border-radius: 8px; padding: 10px 14px; margin: 0 0 10px; page-break-inside: avoid; }
            .conclusie-tabel td { border: none !important; padding: 3px 0; font-size: 13px; white-space: normal; word-break: break-word; }
            .conclusie-tabel td[data-label]::before { content: attr(data-label); display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: #64748b; }
            .conclusie-tabel td[data-label="Activiteit"] { font-size: 15px; font-weight: 700; color: #002C64; }
            .conclusie-tabel td[data-label="Activiteit"]::before, .conclusie-tabel td[data-label="Status"]::before { display: none; }
            .print-only { display: block !important; }               /* print-header tonen */
        }
        .print-only { display: none; }                               /* buiten print verborgen */

        .btn-optie {
            display: block; width: 100%; padding: 12px 16px; margin-bottom: 8px;
            background: white; color: var(--ink); border: 2px solid var(--border);
            border-radius: 10px; font-size: 14px; text-align: left; cursor: pointer;
            transition: all .15s;
        }
        .btn-optie:hover { border-color: var(--vng-light); background: var(--bg-soft); }
        .btn-optie:disabled { opacity: .5; cursor: not-allowed; }

        .getal-input { display: flex; gap: 10px; align-items: center; }
        .getal-input input { width: 160px; }
        /* FIX VIS-1-STRAY-GETALVELD (Grader 2026-06-12): voorkom dat een stray
           <input type="number"> buiten de .getal-input-wrapper visueel boven
           keuzeknoppen verschijnt. Stand-alone number-inputs verbergen tenzij
           expliciet in een .getal-input-wrapper. */
        #vraagblok > input[type="number"]:not(.getal-input input),
        .vraag-card > input[type="number"]:not(.getal-input input) { display: none !important; }

        /* tabel */
        .conclusie-tabel { width: 100%; border-collapse: collapse; margin-top: 8px; }
        .conclusie-tabel th {
            background: var(--vng-dark); color: white; padding: 10px 12px; text-align: left; font-size: 12px;
            text-transform: uppercase; letter-spacing: .05em;
        }
        .conclusie-tabel td { padding: 12px; border-bottom: 1px solid var(--border); font-size: 13px; vertical-align: top; }
        .conclusie-tabel tr:last-child td { border-bottom: none; }
        /* FIX T-MOB-1 (+ tweelingbroer van HOOG-PRINT-CONCLUSIE-TABEL-LAYOUT-
           GESTAPELD): op smal scherm perst de 4-koloms tabel de Toelichting weg.
           Render als gestapelde blokken, identiek aan @media print. */
        @media (max-width: 600px) {
            .conclusie-tabel thead { display: none; }
            .conclusie-tabel, .conclusie-tabel tbody, .conclusie-tabel tr, .conclusie-tabel td { display: block; width: 100% !important; }
            .conclusie-tabel tr { border: 1px solid var(--border); border-radius: 8px; padding: 10px 14px; margin: 0 0 10px; }
            .conclusie-tabel td { border: none !important; padding: 3px 0; }
            .conclusie-tabel td[data-label]::before { content: attr(data-label); display: block; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--ink-muted); }
            .conclusie-tabel td[data-label="Activiteit"] { font-size: 15px; font-weight: 700; color: var(--vng-dark); }
            .conclusie-tabel td[data-label="Activiteit"]::before, .conclusie-tabel td[data-label="Status"]::before { display: none; }
        }

        .status-badge {
            display: inline-block; padding: 3px 10px; border-radius: 12px;
            font-size: 11px; font-weight: 700; text-transform: uppercase;
        }
        /* FIX KLEURSEMANTIEK-RESULTATEN (ISO 3864 + WCAG, Cowork-oordeel 2026-07-23): een
           omgevingsvergunning is juridisch 'toegestaan mits vergund', geen verbod -> rood is
           vals-ontmoedigend (spiegel van vals-geruststellend). Tier 2 = sterk amber/oranjebruin
           (NIET lichtrood, dat houdt het in de gevaar-familie); rood blijft UITSLUITEND op
           .status-niet_toegestaan (tier 1). Contrast geverifieerd: #7c2d12 op #fff4e6 = 8.63:1. */
        .status-vergunning { background: #fff4e6; color: #7c2d12; }
        /* Tier 3 = melding/informatieplicht: lichter geel/amber met donkere tekst (geel-op-wit is de
           WCAG-valkuil). Contrast #854d0e op #fef9c3 = 6.38:1. */
        .status-melding { background: #fef9c3; color: #854d0e; }
        /* FIX HOOG-STATUS-INFORMATIEPLICHT-ZONDER-CSS-LABEL-RANG (audit ronde 19): de status
           'informatieplicht' (harde termijnplicht, o.a. Bal art. 3.207 — aanleveren >= 4 weken
           vóór aanvang) wordt wél uitgezonden (regelkennis.py bepaal_mba_agrarisch_plant) maar
           stond in GEEN van de vier kaarten: geen CSS -> kale chip zonder kleur, geen label ->
           rauwe enum in kapitalen, geen rang -> gesorteerd ONDER 'onbekend'. Zelfde defectklasse
           als de voorbehoud-fix verderop. Tier 3 samen met melding, zie de comment hierboven. */
        .status-informatieplicht { background: #fef9c3; color: #854d0e; }
        .status-vergunningvrij { background: #e8f5e9; color: var(--green); }
        /* STATUS-OMSLAG (2026-07-08): 'waarschijnlijk vergunningvrij' — lime/geel-tint,
           visueel tussen kaal groen (vrij) en blauw (nader onderzoek); niet met kaal
           groen te verwarren zodat de burger de reële-maar-klein-risico-nuance ziet. */
        /* was #827717 = 4,01:1; #6b6212 = 5,45:1 (audit ronde 19, WCAG 1.4.3) */
        .status-vergunningvrij_mits_lokaal { background: #f0f4c3; color: #6b6212; }
        .status-niet_van_toepassing { background: #f3e5f5; color: #7b1fa2; }
        .status-nader_onderzoek { background: #e3f2fd; color: #1565c0; }
        /* .status-laag_risico geschrapt 2026-08-03 (HOOG-STATUS-ENUM-DRIFT): fantoom-status,
           0 emitters in de hele .py-boom — hij bestond alleen als CSS-klasse, label en rang. */
        .status-niet_toegestaan { background: #ffcdd2; color: #b71c1c; }
        /* was var(--orange) #e65100 = 3,46:1; #b34700 = 5,02:1. Bewust een lokale override i.p.v. de
           variabele wijzigen: --orange dient elders als ACHTERGROND met witte tekst. */
        .status-waarschuwing { background: #fff3e0; color: #b34700; }
        /* FIX WCAG-1.4.3-CONTRAST-UITKOMSTBADGES (audit ronde 19): #f57f17 op #fff8e1 was 2,49:1 —
           ruim onder de AA-drempel 4,5:1, en juist op de badges die het juridische oordeel dragen.
           #8a5000 op #fff8e1 = 6,12:1, zelfde amber-familie. */
        .status-aandachtspunt { background: #fff8e1; color: #8a5000; }
        .status-voldoet { background: #e8f5e9; color: var(--green); }
        /* was #757575 = 4,23:1; #616161 = 5,68:1 (audit ronde 19, WCAG 1.4.3) */
        .status-onbekend { background: #f5f5f5; color: #616161; }
        .status-informatie { background: #e3f2fd; color: #1565c0; }
        /* FIX HOOG-STATUSBADGE-ZONDER-CSS-VOORBEHOUD-VISUEEL-STILST-KLASSE (Grader-meting
           2026-08-01): voorbehoud (38 emissieplekken), buiten_scope en samenvatting werden
           uitgezonden zonder eigen CSS-regel en vielen terug op de kale .status-badge -> geen
           achtergrondkleur. Juist de rij die zegt "wij konden dit niet vaststellen" was daardoor
           visueel de RUSTIGSTE van de pagina, terwijl elke andere rij een sturende kleur kreeg:
           vals-geruststelling via vormgeving (anker vals-geruststellend = 0).
           VOORBEHOUD = onopgeloste twijfel, GEEN lopend onderzoek en GEEN geruststelling. Daarom
           bewust BUITEN de groene familie (#e8f5e9) en buiten het nader_onderzoek-blauw (#e3f2fd):
           een warm-neutrale taupe met een DASHED rand — de streepjesrand leest als 'nog niet rond'
           en trekt de scannende blik. Contrast geverifieerd (WCAG): #4e342e op #ece3d8 = 8.92:1. */
        .status-voorbehoud { background: #ece3d8; color: #4e342e; border: 1px dashed #8d6e63; }
        /* buiten_scope = valt buiten de vergunningcheck; neutraal blauwgrijs, geen oordeel.
           Contrast #37474f op #eceff1 = 8.35:1. */
        .status-buiten_scope { background: #eceff1; color: #37474f; }
        /* samenvatting = kop-/rollup-rij, geen statusoordeel. Donkere chip zodat hij als kader
           leest en niet als een van de kleur-tiers. Contrast #ffffff op #455a64 = 7.24:1. */
        .status-samenvatting { background: #455a64; color: #ffffff; }
        /* FIX HOOG-NVT-STATUS-ONZICHTBAAR-VOOR-ZEEF (2026-09-09, FILING 411). Vierde
           instantie van de kale-badge-klasse hierboven, en de grootste: op een terminale
           pagina zet markeer_terminaal_onderdrukt 19 van de 24 rijen op status 'n.v.t.'
           — inclusief de knock-out-rij — en er was GEEN selector die daarop matchte. De
           badge viel terug op de kale .status-badge: kleurloos, precies op de pagina waar
           de burger de zwaarste boodschap krijgt.
           WAAROM DE BACKSLASHES: de klasse die de renderer bouwt is letterlijk
           `status-n.v.t.` (`status-${status}`, r6986). In een class-ATTRIBUUT is een punt
           een gewoon teken, maar in een SELECTOR begint hij een nieuwe klasse — `.status-n`
           gevolgd door `.v` en `.t`. Daarom moeten de punten hier ontsnapt worden; dat is
           dezelfde klasse als de status-naam zelf, niet een tweede vorm.
           Kleur = die van niet_van_toepassing (dezelfde betekenis voor de burger: deze rij
           doet geen uitspraak meer). Contrast #7b1fa2 op #f3e5f5 = 7.66:1 (WCAG AA). */
        .status-n\.v\.t\. { background: #f3e5f5; color: #7b1fa2; }

        /* overall advies — FIX UX-RESULTAAT: compacter (was paginavullend) */
        .overall-advies {
            padding: 12px 16px; border-radius: var(--radius); margin-bottom: 12px;
            animation: fadeIn .5s ease; box-shadow: var(--shadow);
            display: flex; align-items: center; gap: 12px;
        }
        .overall-advies h2 { margin: 0; font-size: 16px; font-weight: 700; }
        .overall-advies p { font-size: 13px; margin: 2px 0 0; opacity: 0.95; }
        /* FIX HOOG-R21-H3 (auditor r21, WCAG 1.4.3): de banner draagt het HOOFDOORDEEL, en wit haalde op het
           lichte gradiënt-eind geen 4,5:1 (oranje 2,70 · lichtgroen 2,36 · groen 3,30 · rood 4,23). Beide eindes
           nu >= 4,5:1, ook voor de <p> met opacity .95 (zwakste: groen/oranje 4,79 resp. 4,84). Kleur aangepast,
           tint behouden; niet de tekst vergroot om de large-text-uitzondering te halen. Gemeten door
           guard_kleursemantiek_vergunning_geen_rood as E (populatie .overall-*, beide eindes). */
        .overall-rood { background: linear-gradient(135deg, #b71c1c, #c62828); color: white; }
        .overall-oranje { background: linear-gradient(135deg, #9a3412, #c2410c); color: white; }
        .overall-geel { background: linear-gradient(135deg, #f9a825, #fdd835); color: #333; }
        .overall-lichtgroen { background: linear-gradient(135deg, #33691e, #467a28); color: white; }
        .overall-groen { background: linear-gradient(135deg, #1b5e20, #2e7d32); color: white; }
        .overall-icon { font-size: 24px; flex-shrink: 0; }
        .suggestie-list { list-style: none; padding: 0; margin-top: 12px; }
        .suggestie-list li {
            padding: 10px 14px; margin-bottom: 6px; border-radius: 8px;
            font-size: 14px; display: flex; gap: 8px; align-items: flex-start;
            background: rgba(255,255,255,0.18);
        }
        .overall-geel .suggestie-list li { background: rgba(0,0,0,0.06); }
        .suggestie-icon { flex-shrink: 0; font-size: 16px; }

        /* RESULTATENPAGINA-LAYOUT punt 7 — VERVALLEN, subject bestaat niet meer (Fixer 2026-08-25).
           Punt 7 vroeg om het 4-koloms .counter-telblok te HERORDENEN naar de severity-ladder
           (verboden -> vergunning -> melding -> vrij) i.p.v. vier gelijk-gewicht cijfers. Gemeten
           vóór bouw: dat telblok staat al niet meer op de burger-surface. FIX UX-RESULTAAT-
           HERONTWERP (Grader-prio 2) heeft de samenvatting-tellers VERWIJDERD omdat ze de
           conclusie-status telden i.p.v. de indien-keten en daardoor misleidende waarden gaven
           ('1 melding' bij 4 to-do-items) — zie de comment bij het resultaat-blok verderop. Wat
           overbleef was uitsluitend de CSS: `class="counter"`/`counter-item` kwam 0x voor in de
           markup van deze template en 0x in de overige .html/.py/.js van de tool-repo (de enige
           treffers staan in archive_dakkapel_tool/, een aparte gearchiveerde app). Die dode CSS
           hier laten staan is geen neutrale rest: hij LEEST als een bestaand telblok en nodigt de
           volgende bouwer uit een severity-ladder op een klasse te leggen die niets rendert —
           vals-groen op de burger-surface. Herordenen is dus geen fix maar een HERINTRODUCTIE van
           een blok dat de Grader bewust heeft gesloopt; die keuze is Owner-/Grader-terrein, niet
           Fixer-terrein. Regels verwijderd i.p.v. aangepast. */
        /* FIX RESULTATENPAGINA-LAYOUT punt 4 (companion kleuroordeel): compacte termijn-chronologie
           bovenaan de acties zodra >=2 distincte momentzinnen bestaan. Scanbare fase-volgorde; de
           precieze wettelijke termijn blijft per actie inline (r4258). */
        .termijn-chrono-lijst { list-style: none; padding: 0; margin: 8px 0 0; }
        .termijn-fase { position: relative; padding: 0 0 14px 20px; border-left: 2px solid var(--vng-light); margin-left: 6px; }
        .termijn-fase:last-child { border-left-color: transparent; padding-bottom: 0; }
        .termijn-fase::before { content: ''; position: absolute; left: -7px; top: 3px; width: 12px; height: 12px; border-radius: 50%; background: var(--vng-light); border: 2px solid #fff; }
        .termijn-fase-kop { font-weight: 700; font-size: 14px; color: var(--vng-dark); }
        .termijn-fase-hint { font-size: 12px; color: var(--ink-muted); margin: 2px 0 4px; }
        .termijn-fase-items { margin: 0; padding-left: 18px; font-size: 13px; }
        .termijn-fase-items li { margin: 2px 0; }
        .termijn-art { color: var(--ink-muted); font-size: 11px; }

        .opnieuw { text-align: center; margin-top: 16px; }
        .opnieuw a { cursor: pointer; font-weight: 600; }

        .hidden { display: none; }

        .spinner {
            display: inline-block; width: 18px; height: 18px;
            border: 3px solid rgba(255,255,255,0.3); border-top-color: white;
            border-radius: 50%; animation: spin .7s linear infinite;
            margin-right: 8px; vertical-align: middle;
        }
        @keyframes spin { to { transform: rotate(360deg); } }

        .melding-toelichting {
            text-align: center; font-size: 12px; color: var(--ink-muted);
            margin-top: 12px; padding: 10px;
            background: var(--bg-soft); border-radius: 8px;
        }

        /* Diepe analyse — progressive enhancement */
        .diepe-analyse-laadt {
            display: flex; align-items: center; gap: 12px;
            background: var(--bg-soft); border-left: 4px solid var(--vng-light);
            padding: 14px 18px; border-radius: 10px; margin-top: 14px;
            font-size: 14px; color: var(--ink-muted);
            animation: fadeIn .25s ease;
        }
        .spinner-small {
            display: inline-block; width: 14px; height: 14px;
            border: 2px solid rgba(0, 114, 184, 0.25); border-top-color: var(--vng-light);
            border-radius: 50%; animation: spin .7s linear infinite;
            flex-shrink: 0;
        }
        .diepe-analyse-leeg {
            font-size: 13px; color: var(--ink-muted);
            background: var(--bg-soft); padding: 12px;
            border-radius: 8px; margin-top: 14px;
        }
        .diepe-analyse-resultaat {
            margin-top: 14px;
            border-top: 3px solid var(--vng-light);
            animation: fadeIn .35s ease;
        }
        .diepe-analyse-resultaat h2 {
            color: var(--vng-dark); font-size: 17px;
        }
        .diepe-analyse-meta {
            font-size: 13px; color: var(--ink-muted); margin-bottom: 14px;
        }
        .diepe-vragen {
            list-style: none; padding: 0; margin: 0;
            counter-reset: diepe-counter;
        }
        .diepe-vraag-item {
            counter-increment: diepe-counter;
            position: relative; padding: 12px 14px 12px 44px;
            background: var(--bg-soft); border-radius: 10px;
            margin-bottom: 10px;
        }
        .diepe-vraag-item::before {
            content: counter(diepe-counter);
            position: absolute; left: 14px; top: 12px;
            width: 22px; height: 22px; border-radius: 50%;
            background: var(--vng-light); color: white;
            text-align: center; line-height: 22px;
            font-size: 12px; font-weight: 700;
        }
        .diepe-vraag-tekst {
            font-weight: 600; color: var(--vng-dark);
            font-size: 14px; margin-bottom: 4px;
        }
        .diepe-vraag-toelichting {
            font-size: 13px; color: var(--ink); margin-bottom: 6px;
        }
        .diepe-vraag-ref {
            font-size: 11px; color: var(--ink-muted); font-style: italic;
        }
        .diepe-analyse-besi {
            margin-top: 14px; padding: 12px 14px;
            background: #e8f6e9; border-left: 4px solid #2e8b57;
            border-radius: 8px; font-size: 13px;
            color: #1d5430;
        }
        .diepe-analyse-besi a { color: #1d5430; font-weight: 600; }

        /* Progress / zandloper */
        .diepe-progress-card { margin-top: 14px; animation: fadeIn .25s ease; }
        .diepe-progress-header {
            display: flex; align-items: center; gap: 14px; margin-bottom: 14px;
        }
        .diepe-zandloper {
            font-size: 30px; line-height: 1;
            animation: zandloper 1.8s ease-in-out infinite;
            display: inline-block; transform-origin: center;
        }
        @keyframes zandloper {
            0%   { transform: rotate(0deg);    opacity: 1; }
            45%  { transform: rotate(180deg);  opacity: 1; }
            55%  { transform: rotate(180deg);  opacity: .9; }
            100% { transform: rotate(360deg);  opacity: 1; }
        }
        .diepe-progress-titel {
            font-size: 16px; font-weight: 700; color: var(--vng-dark);
        }
        .diepe-progress-subtitel {
            font-size: 13px; color: var(--ink-muted);
        }
        .diepe-stappen {
            list-style: none; padding: 0; margin: 0;
            border-left: 2px solid var(--border); padding-left: 14px;
        }
        .diepe-stap {
            position: relative; padding: 6px 0 6px 4px; font-size: 13px;
            animation: fadeIn .25s ease;
        }
        .diepe-stap::before {
            content: ''; position: absolute; left: -19px; top: 11px;
            width: 8px; height: 8px; border-radius: 50%; background: var(--border);
        }
        .diepe-stap-bezig {
            color: var(--vng-dark); font-weight: 500;
        }
        .diepe-stap-bezig::before {
            background: var(--vng-light); animation: pulse 1s ease-in-out infinite;
        }
        @keyframes pulse {
            0%, 100% { transform: scale(1); }
            50%      { transform: scale(1.4); }
        }
        .diepe-stap-ok { color: var(--ink-muted); }
        .diepe-stap-ok::before { background: var(--green); }
        .diepe-stap-tekst { display: inline-block; }

        /* Resultaat na klaar */
        .diepe-analyse-fout { border-left: 4px solid var(--amber); }
        .diepe-subsectie {
            font-size: 14px; color: var(--vng-dark); margin: 18px 0 8px;
        }
        .diepe-soorten { list-style: none; padding: 0; margin: 0; }
        .diepe-soort-item {
            display: flex; gap: 12px; align-items: flex-start;
            padding: 10px 12px; background: #f4faff;
            border-radius: 8px; margin-bottom: 8px;
            border-left: 3px solid var(--vng-light);
        }
        .diepe-soort-icoon { font-size: 24px; line-height: 1; }
        .diepe-soort-naam {
            font-weight: 600; color: var(--vng-dark); font-size: 14px;
        }
        .diepe-soort-reden {
            font-size: 12px; color: var(--ink); margin-top: 2px;
        }

        /* error/banner */
        .banner {
            padding: 16px; border-radius: 10px;
            background: #fff3e0; color: var(--orange);
            border-left: 4px solid var(--orange); font-size: 14px;
        }
        .banner strong { color: var(--vng-dark); display: block; margin-bottom: 4px; }

        /* ============ BLOKKERENDE LIMIET-MODAL (429) ============
           HOOG-UX-LIMIET-429-ALS-MODAL-NIET-BANNER-DEMO-BLOKKEREND. Owner-besluit
           2026-08-18 (bindend): "een pop-up in een andere kleur waar je niet omheen kan."
           Waarom niet de .banner: die stond zonder scrollIntoView tot +2480px buiten beeld
           (gemeten) en is bovendien visueel niet te onderscheiden van de routine-
           aandachtspunten — #fff3e0/#fff8e1 is bezet door N2000, voorbereidingsbesluit,
           participatie en KLIC, waar een normaal resultaat vol mee staat. Zichtbaar is
           niet hetzelfde als opvallend. Deze overlay hergebruikt het BESTAANDE modal-
           patroon (position:fixed; inset:0; z-index >= 1000, zoals .bezig-overlay/
           .interpret-overlay) in een aantoonbaar andere kleurfamilie: rood (hue ~0)
           tegenover aandachtspunt-oranje (hue ~30-40). */
        .limiet-overlay {
            position: fixed; inset: 0; z-index: 1020;
            display: flex; align-items: center; justify-content: center;
            background: rgba(15,23,42,.62); -webkit-backdrop-filter: blur(2px);
            backdrop-filter: blur(2px); padding: 20px;
            animation: fadeIn .2s ease;
        }
        .limiet-overlay.hidden { display: none; }
        .limiet-card {
            background: #fdeaea; border-top: 6px solid #b3261e;
            border-radius: 16px; padding: 24px 24px 20px;
            max-width: 520px; width: 100%;
            box-shadow: 0 20px 60px rgba(0,0,0,.35);
            text-align: left; color: #4a1512;
        }
        .limiet-card h3 { margin: 0 0 10px; font-size: 19px; color: #8c1d18; }
        .limiet-tekst { font-size: 15px; line-height: 1.5; }
        .limiet-tekst a { color: #8c1d18; font-weight: 600; }
        .limiet-acties { margin-top: 18px; display: flex; justify-content: flex-end; }
        .limiet-sluit {
            background: #8c1d18; color: #fff; border: none; border-radius: 8px;
            padding: 10px 18px; font-size: 14px; font-weight: 600; cursor: pointer;
        }
        .limiet-sluit:hover { background: #6f1713; }

        /* ============ WIZARD-MODE ============ */
        .wizard-kop {
            position: sticky; top: 0; z-index: 50;
            background: var(--vng-dark); color: #fff;
            padding: 12px 18px;
            border-radius: 12px 12px 0 0;
            display: flex; align-items: center; justify-content: space-between;
            gap: 12px; flex-wrap: wrap;
            box-shadow: 0 2px 8px rgba(0,0,0,0.06);
        }
        .wizard-kop-tekst {
            font-size: 14px; line-height: 1.4;
            flex: 1; min-width: 0;
        }
        .wizard-kop-tekst .wkop-label { opacity: 0.7; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; }
        .wizard-kop-tekst .wkop-val { font-weight: 500; }
        .wizard-bewerk-btn {
            background: rgba(255,255,255,0.12); color: #fff;
            border: 1px solid rgba(255,255,255,0.25);
            padding: 6px 12px; border-radius: 8px;
            font-size: 13px; cursor: pointer; transition: background .15s;
        }
        .wizard-bewerk-btn:hover { background: rgba(255,255,255,0.22); }

        .wizard-progress {
            background: #fff; padding: 14px 18px 6px;
            border-bottom: 1px solid var(--border);
        }
        .wizard-progress-bar {
            height: 6px; background: var(--border);
            border-radius: 3px; overflow: hidden;
        }
        .wizard-progress-fill {
            height: 100%; background: var(--vng-light);
            border-radius: 3px; transition: width .35s ease;
        }
        .wizard-progress-tekst {
            font-size: 12px; color: var(--ink-muted);
            margin-top: 6px; text-align: right;
        }

        .wizard-vraag-wrap {
            background: #fff; padding: 22px 18px;
            border-bottom: 1px solid var(--border);
            min-height: 200px;
        }
        .wizard-vorige-btn {
            background: transparent; color: var(--vng-dark);
            border: none; cursor: pointer;
            padding: 8px 14px; font-size: 14px;
            display: inline-flex; align-items: center; gap: 6px;
        }
        .wizard-vorige-btn:hover { text-decoration: underline; }
        /* FIX MIDDEN-NIEUWBOUW-VRAAG-BUGS Bug B (Grader 2026-06-20): .wizard-vorige-btn
           (display:inline-flex) staat LATER dan .hidden{display:none} bij gelijke
           specificiteit -> .hidden verloor en de knop was altijd zichtbaar, ook op
           vraag 1. Dubbele klasse-selector (specificiteit 0,0,2,0) wint nu altijd. */
        .wizard-vorige-btn.hidden { display: none; }
        .wizard-vorige-wrap {
            background: #fff; padding: 6px 18px 14px;
            border-bottom: 1px solid var(--border);
        }

        .wizard-voet {
            position: sticky; bottom: 0; z-index: 50;
            background: #fafbfc;
            border-radius: 0 0 12px 12px;
            padding: 12px 18px;
            border-top: 1px solid var(--border);
            box-shadow: 0 -2px 8px rgba(0,0,0,0.04);
        }
        .wizard-voet-label {
            font-size: 11px; color: var(--ink-muted);
            text-transform: uppercase; letter-spacing: 0.5px;
            margin-bottom: 8px;
        }
        .wizard-chips { display: flex; flex-wrap: wrap; gap: 6px; }
        .wizard-chip {
            background: #fff; border: 1px solid var(--border);
            padding: 5px 10px; border-radius: 20px;
            font-size: 12px; cursor: pointer;
            transition: all .15s;
            display: inline-flex; align-items: center; gap: 5px;
        }
        .wizard-chip:hover { border-color: var(--vng-light); background: #f5f9fd; }
        .wizard-chip:focus-visible { outline: 3px solid var(--vng-light); outline-offset: 2px; }
        /* FIX MIDDEN-DASHBOARD-VOORBEHOUD-ALLEEN-IN-TITLE-TOOLTIP (audit ronde 19): de drie
           voorbehouden op het dashboard (rijksmonument/gezicht: "alleen het landelijke register
           gecontroleerd") leefden uitsluitend in een title-attribuut zonder enige CSS-regel:
           geen zichtbare affordance, niet bereikbaar per toetsenbord, en een title opent niet op
           touch. Nu: zichtbare gestippelde markering + focusbaar (tabindex/role=note), zodat
           screenreaders en toetsenbordgebruikers de tekst wél bereiken. Een tap-toggle voor
           touch blijft een vervolgstap (aan de Grader gemeld). */
        .dash-voorbehoud { cursor: help; border-bottom: 1px dotted currentColor; padding: 0 2px; }
        .dash-voorbehoud:focus-visible { outline: 3px solid var(--vng-light); outline-offset: 2px; }
        .wizard-chip-ja { color: #2e7d32; }
        .wizard-chip-nee { color: #c62828; }
        .wizard-chip-leeg { color: var(--ink-muted); font-style: italic; cursor: default; }
        .wizard-chip-leeg:hover { border-color: var(--border); background: #fff; }

        /* Wizard wrap-container met afgeronde hoeken */
        #wizard-mode {
            background: #fff; border-radius: 12px;
            box-shadow: 0 2px 12px rgba(0,0,0,0.04);
            overflow: hidden;
            margin-bottom: 24px;
        }

        /* Grondslag-blok in vraag */
        .vraag-grondslag-uitklap {
            margin-top: 12px; font-size: 13px;
            background: #f5f9fd; border-left: 3px solid var(--vng-light);
            padding: 10px 12px; border-radius: 0 8px 8px 0;
            color: var(--ink-muted);
        }
        .vraag-grondslag-uitklap b { color: var(--vng-dark); }

        @media (max-width: 640px) {
            .wizard-kop { border-radius: 0; }
            #wizard-mode { border-radius: 0; }
            .wizard-voet { border-radius: 0; }
        }

        /* ============ INDIEN-ACTIES (eindscherm) ============ */
        .acties-card { background:#fff; border:1px solid var(--border); border-radius:12px; padding:20px; margin-top:18px; }
        .acties-card h2 { margin:0 0 8px 0; }
        .acties-meta { color:var(--ink-muted); font-size:13px; margin:0 0 14px 0; }
        .acties-moment { margin-top:6px; font-size:13px; color:var(--ink); background:#f1f6ff; border-left:3px solid #3b6fd4; border-radius:6px; padding:6px 10px; }
        .acties-moment-ic { margin-right:2px; }
        .acties-moment-art { color:var(--ink-muted); font-size:12px; }
        .acties-lijst { list-style:none; padding:0; margin:0; counter-reset:item; }
        .acties-item {
            border-left:4px solid var(--border);
            padding:12px 14px;
            margin-bottom:10px;
            background:#fafbfc;
            border-radius:0 8px 8px 0;
            position:relative;
            counter-increment:item;
        }
        /* FIX KLEURSEMANTIEK-RESULTATEN req4 (balk-/actie-vocabulaire, follow-up op kern 8c67332):
           de indien-checklist droeg voor een omgevingsvergunning nog het verbod-rood (var(--red))
           als accent — dezelfde vals-ontmoedigende ISO-3864-rood-op-een-verleenbare-vergunning die
           de badge-tier al verliet. Accent nu tier-2 amber/oranjebruin (#92400e), consistent met de
           .status-vergunning-badge en de overall-balk (📋). Rood blijft uitsluitend tier-1 verbod. */
        .acties-item-vergunning { border-left-color: #92400e; }
        /* Melding = tier 3: lichter amber (#a16207), niet het deep-orange var(--orange) dat te dicht
           bij de tier-2-vergunning-familie ligt. */
        .acties-item-melding    { border-left-color: #a16207; }
        .acties-item-informatie { border-left-color: var(--vng-light); }
        .acties-item-maatregel  { border-left-color: #f9c84a; }
        .acties-titel { font-weight:600; color:var(--vng-dark); margin-bottom:4px; }
        .acties-soort { color:var(--ink-muted); font-weight:500; font-size:13px; margin-right:4px; }
        .acties-omschrijving { font-size:14px; line-height:1.5; margin-bottom:6px; }
        /* GH7 (MIDDEN-HOOG-GH7-NESTING-PRESENTATIE-EEN-OMGEVINGSVERGUNNING): onderdelen van één
           omgevingsvergunning genest onder de moederkaart — subordinaat, geen eigen rode gelijkwaardige kaart. */
        .acties-moeder > .acties-onderdelen { list-style:none; padding:0; margin:10px 0 0; counter-reset:onderdeel; }
        .acties-onderdeel {
            counter-increment:onderdeel;
            border-left:3px solid #e2e8f0;
            background:#fff;
            border-radius:0 6px 6px 0;
            padding:8px 12px;
            margin-top:8px;
        }
        .acties-onderdeel-titel { font-weight:600; color:var(--vng-dark); margin-bottom:4px; font-size:14px; }
        .acties-onderdeel-titel::before { content:"Onderdeel " counter(onderdeel) ": "; color:var(--ink-muted); font-weight:500; font-size:12px; }
        .acties-urgentie { font-size:12px; color:var(--ink-muted); margin-bottom:4px; }
        .acties-grondslag { font-size:12px; color:var(--ink-muted); margin-bottom:8px; }
        .acties-link {
            display:inline-block; padding:6px 12px;
            background:var(--vng-dark); color:#fff;
            border-radius:6px; text-decoration:none;
            font-size:13px; font-weight:500;
        }
        .acties-link:hover { background:var(--vng-light); }

        /* ============ COMPACT MODE — actie eerst, rest in expander ============ */
        .acties-meer, .conclusie-meer {
            margin-top: 4px;
            font-size: 13px;
            color: var(--ink-muted);
        }
        .acties-meer summary, .conclusie-meer summary {
            cursor: pointer;
            color: var(--vng-dark);
            font-weight: 500;
            font-size: 12px;
            user-select: none;
            list-style: none;
            display: inline-block;
            padding: 2px 0;
        }
        .acties-meer summary::before, .conclusie-meer summary::before {
            content: "▸ ";
            display: inline-block;
            transition: transform .15s ease;
        }
        .acties-meer[open] summary::before, .conclusie-meer[open] summary::before {
            content: "▾ ";
        }
        .acties-meer summary:hover, .conclusie-meer summary:hover {
            color: var(--vng-light);
            text-decoration: underline;
        }
        /* FIX VIS-TOELICHTING-LINK-NIET-INTUITIEF: chip-uiterlijk maakt de
           'Lees toelichting'-summary herkenbaar klikbaar (i.p.v. een kaal
           blauw pijltje). Subtiele rand + achtergrond = duidelijke CTA. */
        .conclusie-meer summary.conclusie-meer-cta {
            border: 1px solid var(--vng-light, #6aa6d8);
            border-radius: 12px;
            padding: 2px 10px;
            background: #eef4fb;
            color: var(--vng-dark);
        }
        .conclusie-meer summary.conclusie-meer-cta:hover {
            background: var(--vng-light, #6aa6d8);
            color: #fff;
            text-decoration: none;
        }
        .acties-meer-inhoud, .conclusie-meer-inhoud {
            margin-top: 6px;
            padding: 8px 12px;
            background: #f5f7fa;
            border-radius: 6px;
            line-height: 1.5;
        }

        /* ============ KAART-PICKER ============ */
        .locatie-hint {
            display: flex; align-items: center; gap: 6px;
            margin-top: 6px; flex-wrap: wrap;
        }
        .link-knop {
            background: transparent; border: none;
            color: var(--vng-dark); font-size: 13px;
            cursor: pointer; padding: 2px 0;
            text-decoration: underline; text-underline-offset: 2px;
        }
        .link-knop:hover { color: var(--vng-light); }
        .hint-muted { color: var(--ink-muted); font-size: 12px; }

        .kaart-paneel {
            margin-top: 10px;
            border: 1px solid var(--border);
            border-radius: 10px;
            background: #fff;
            padding: 12px;
        }
        .kaart-paneel-kop {
            display: flex; justify-content: space-between; align-items: center;
            margin-bottom: 8px;
            font-size: 13px; color: var(--ink-muted);
        }
        .kaart-resultaat {
            margin-top: 10px; min-height: 24px;
            font-size: 13px;
        }
        .kaart-resultaat.gekozen {
            background: #e8f5e9; padding: 10px 12px;
            border-left: 3px solid var(--green); border-radius: 0 8px 8px 0;
            color: #1b5e20;
        }
        .kaart-resultaat-adres { font-weight: 500; }
        .kaart-resultaat-coords { font-size: 12px; opacity: 0.8; }
        .kaart-laden { color: var(--ink-muted); font-style: italic; }

        /* Bezig-popup (modal) tijdens het toetsen — verdwijnt zodra het klaar is. */
        .bezig-overlay {
            position: fixed; inset: 0; z-index: 1000;
            display: flex; align-items: center; justify-content: center;
            background: rgba(15,23,42,.45); -webkit-backdrop-filter: blur(2px);
            backdrop-filter: blur(2px); padding: 20px;
            animation: fadeIn .2s ease;
        }
        .bezig-overlay.hidden { display: none; }
        .bezig-card {
            background: #fff; border-radius: 16px; padding: 26px 22px 22px;
            max-width: 560px; width: 100%; box-shadow: 0 20px 60px rgba(0,0,0,.3);
            text-align: center;
        }
        .bezig-card h3 { margin: 0 0 4px; color: var(--vng-dark); font-size: 18px; }
        .bezig-card p { margin: 0 0 16px; color: var(--ink-muted); font-size: 14px; }
        .bezig-card .stappen { margin-top: 4px; }
        /* Donkere spinner-variant (de standaard .spinner is wit, voor de knop). */
        .spinner-dark { border-color: rgba(11,61,145,.25); border-top-color: var(--vng-dark); }

        /* Interpretatie-modal (pop-up vóór de vragen — HOOG-INTERPRETATIE-REFLECTIE) */
        .interpret-overlay {
            position: fixed; inset: 0; z-index: 1010;
            display: flex; align-items: center; justify-content: center;
            background: rgba(15,23,42,.50); -webkit-backdrop-filter: blur(2px);
            backdrop-filter: blur(2px); padding: 20px;
            animation: fadeIn .2s ease;
        }
        .interpret-overlay.hidden { display: none; }
        .interpret-card {
            background: #fff; border-radius: 16px; padding: 26px 24px 22px;
            max-width: 580px; width: 100%; box-shadow: 0 20px 60px rgba(0,0,0,.3);
            text-align: left;
        }
        .interpret-card h3 { margin: 0 0 10px; color: var(--vng-dark); font-size: 17px; }
        .interpret-samenvatting {
            background: #f0f4ff; border-left: 3px solid var(--vng-light);
            border-radius: 6px; padding: 10px 14px; margin: 0 0 14px;
            font-size: 14px; color: var(--ink);
        }
        /* SPEC-INTERPRETATIE-SAMENVATTING-ALTIJD-ZICHTBAAR: niet-blokkerende
           inline begrip-samenvatting bovenaan het resultaat. */
        #begrip-banner { margin: 0 0 14px; }
        #begrip-banner.hidden { display: none; }
        .begrip-card {
            background: #f0f4ff; border-left: 3px solid var(--vng-light);
            border-radius: 6px; padding: 10px 14px;
            font-size: 14px; color: var(--ink);
        }
        .begrip-card .begrip-tekst { display:block; }
        .begrip-card .begrip-aanpas {
            margin-top: 6px; font-size: 13px; color: var(--ink-muted);
        }
        .begrip-card .begrip-aanpas a {
            color: var(--vng-light); text-decoration: underline; cursor: pointer;
        }
        .interpret-twijfel { margin: 0 0 12px; padding: 0; list-style: none; }
        .interpret-twijfel li {
            background: #fff8e1; border-left: 3px solid #f59e0b;
            border-radius: 5px; padding: 8px 12px; margin-bottom: 6px;
            font-size: 13px; color: #78350f;
        }
        .interpret-hint {
            background: #fef2f2; border-left: 3px solid #f87171;
            border-radius: 6px; padding: 10px 14px; margin: 0 0 14px;
            font-size: 14px; color: #7f1d1d;
        }
        .interpret-aanpassen { margin-top: 12px; }
        .interpret-aanpassen label { display:block; font-size:13px; color:var(--ink-muted); margin-bottom:3px; }
        .interpret-aanpassen input, .interpret-aanpassen textarea {
            width:100%; box-sizing:border-box; border:1px solid #cbd5e1;
            border-radius:7px; padding:8px 10px; font-size:14px;
            font-family:inherit; margin-bottom:8px; resize:vertical;
        }
        /* FIX HOOG-R21-H4 (auditor r21, WCAG 2.4.7/1.4.11): hier stond `outline:none` met een box-shadow van
           ~1,2:1. Deze selector (0,2,1) verslaat de r19-focusfix (textarea:focus/input:focus, 0,1,1), dus de
           correctievelden van de interpretatiemodal hadden géén zichtbare focus — tweede instantie van de
           r19-klasse. Nu dezelfde ring als r19 (#0072B8 op wit, ruim >= 3:1). De populatie-lint
           guard_focus_outline_none_heeft_zichtbare_vervanging houdt de klasse dicht. */
        .interpret-aanpassen input:focus, .interpret-aanpassen textarea:focus {
            border-color:var(--vng-light); outline:3px solid var(--vng-light); outline-offset:1px;
        }
        /* HOOG-INTAKE-POPUP-RIJK-ALTIJD: gerelateerde-activiteiten + extra-info secties */
        .interpret-sectie-titel { font-size:13px; font-weight:600; color:#334; margin:0 0 8px; }
        .interpret-gerelateerd, .interpret-extra { margin:0 0 14px; }
        .interpret-gerelateerd.hidden, .interpret-extra.hidden { display:none; }
        #interpret-chips { display:flex; flex-wrap:wrap; gap:8px; }
        .interpret-chip {
            display:inline-flex; align-items:center; gap:6px; padding:7px 13px; border-radius:18px;
            border:1.5px solid #cdd6ff; background:#f4f6ff; color:#2b3a67; font-size:13px; cursor:pointer;
            transition:all .12s; }
        .interpret-chip:hover { border-color:#8ea0ff; }
        .interpret-chip.gekozen { background:#2b52d6; border-color:#2b52d6; color:#fff; }
        .interpret-chip .chip-vink { font-weight:700; }
        #interpret-extra-lijst { margin:0; padding:0 0 0 18px; }
        #interpret-extra-lijst li { font-size:13px; color:#445; margin:0 0 5px; }
        .interpret-acties { display:flex; gap:10px; margin-top:14px; flex-wrap:wrap; align-items:center; }
        .interpret-acties .btn { flex:1; min-width:130px; text-align:center; padding:10px 16px; font-size:15px; }
        .interpret-acties .btn-sec {
            background:#fff; color:var(--vng-dark); border:1.5px solid var(--vng-light);
            border-radius:8px; padding:9px 16px; font-size:14px; cursor:pointer;
            flex:0; white-space:nowrap;
        }
        .interpret-acties .btn-sec:hover { background:#f0f4ff; }
    