/* ═══════════════════════════════════════════════════════════════════════════
   Schermspecifieke stijl: portal_website

   Op 26 juli 2026 uit het inline `<style>`-blok van de template gehaald. WAAROM dit
   een EIGEN bestand is en niet in een gedeeld bestand: tussen de schermblokken zijn
   **39 echte botsingen** gemeten -- `.top` had zes verschillende definities, `.wrap`
   vijf, en `.chip`/`.taalwissel` betekenden per scherm iets anders. Ze samenvoegen zou
   schermen slopen; het samenvoegen VEILIG maken vraagt eerst een scope-prefix over 672
   selectors. Een eigen bestand maakt de schermspecifieke aard juist expliciet, is
   cachebaar en wordt op inhoud gestempeld (css_version).

   De ECHT gedeelde delen zijn er wél uit: `.taalwissel` (vier bijna identieke kopieen,
   een met een hardgecodeerde kleur), `.hint` -> `.veld-hulp`, `.statusdot` ->
   `.statuschip`, de veldstyling -> `.invoer`. Die staan in componenten.css.

   Dit bestand wordt als LAATSTE geladen, net zoals het inline blok dat stond -- zo
   blijft de cascade-orde identiek.
   ═══════════════════════════════════════════════════════════════════════════ */
    * { box-sizing:border-box; margin:0; padding:0; }
    html { scroll-behavior:smooth; }
    body { background:var(--bg); color:var(--text); line-height:1.65; padding-bottom:130px; }
    a { color:inherit; text-decoration:none; }

    .top { display:flex; align-items:center; justify-content:space-between; padding:16px 28px; border-bottom:1px solid var(--border); background:rgba(7,8,15,.92); -webkit-backdrop-filter:blur(16px); backdrop-filter:blur(16px); position:sticky; top:0; z-index:50; }
    .logo { display:flex; align-items:center; gap:9px; font-weight:800; font-size:15px; color:var(--bright); text-decoration:none; }
    .logo .cave { color:var(--accent-l); }
    .top .acct { font-size:13px; color:var(--accent-l); min-height:44px; display:inline-flex; align-items:center; font-weight:600; }
    /* Taalwisselaar (NL/EN/TR) — kleine pillenrij in de topbalk. */
    /* Aanraakbaar op telefoon (WCAG 2.5.5): 32px is te klein voor een duim en de
       taalkiezer staat op ELK klantscherm. Review 25 juli 2026. */

    /* ── Hero ── */
    .hero { position:relative; text-align:center; padding:64px 20px 20px; overflow:hidden; }
    .hero::before { content:""; position:absolute; top:-260px; left:50%; transform:translateX(-50%); width:720px; height:480px; background:radial-gradient(closest-side, var(--glow), transparent); pointer-events:none; }
    .eyebrow { display:inline-block; font-size:11px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--accent-l); background:rgba(91,140,255,.1); border:1px solid rgba(91,140,255,.25); padding:5px 15px; border-radius:99px; margin-bottom:16px; }
    .hero h1 { color:var(--bright); font-size:clamp(26px,4.6vw,42px); font-weight:800; letter-spacing:-.02em; line-height:1.15; margin-bottom:12px; }
    .hero h1 em { font-style:normal; background:var(--grad-text); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
    .hero .sub { color:var(--muted); max-width:56ch; margin:0 auto; font-size:15.5px; }
    .trust { display:flex; gap:10px; justify-content:center; flex-wrap:wrap; margin-top:22px; }
    .trust span { font-size:12.5px; color:var(--text); background:rgba(255,255,255,.04); border:1px solid var(--border); padding:7px 15px; border-radius:99px; }

    .wrap { max-width:1040px; margin:0 auto; padding:24px 20px 0; }

    /* ── Stappen ── */
    .step-head { display:flex; align-items:center; gap:14px; margin:52px 0 6px; }
    .step-num { width:44px; height:44px; flex:none; display:grid; place-items:center; background:var(--grad); color:var(--wit); font-weight:800; font-size:15px; border-radius:12px; box-shadow:0 8px 24px var(--glow); }
    .step-head h2 { color:var(--bright); font-size:20px; font-weight:700; letter-spacing:-.01em; }
    .step-sub { color:var(--muted); font-size:13.5px; margin:0 0 20px 52px; }

    /* ── Wizard (één stap tegelijk) — alleen actief als JS 'wz-on' zet; zonder JS
         blijven alle stappen zichtbaar (progressive enhancement). ── */
    .wz-progress { max-width:1040px; margin:8px auto 4px; padding:0 20px; display:none; }
    body.wz-on .wz-progress { display:block; }
    .wz-bar { display:flex; gap:6px; margin-bottom:8px; }
    .wz-bar span { flex:1; height:5px; border-radius:99px; background:rgba(255,255,255,.09); transition:background .25s; }
    .wz-bar span.done { background:var(--accent); }
    .wz-bar span.cur { background:var(--grad); }
    .wz-count { font-size:12.5px; color:var(--muted); font-weight:600; }
    .wz-count b { color:var(--bright); }
    body.wz-on .wz-step { display:none; }
    body.wz-on .wz-step.wz-active { display:block; animation:wzin .25s ease; }
    @keyframes wzin { from { opacity:0; transform:translateY(6px); } to { opacity:1; transform:none; } }
    body.wz-on .wz-step[data-wz="4"].wz-active { max-width:1040px; margin:0 auto; padding:0 20px; }
    /* Terugknop in de balk */
    .bar .back { background:transparent; border:1px solid var(--border-a); color:var(--text); border-radius:99px; padding:12px 18px; font-size:14px; font-weight:600; cursor:pointer; white-space:nowrap; }
    .bar .back:hover { border-color:var(--accent); color:var(--bright); }
    .bar .back:focus-visible, .bar .btn:focus-visible { outline:2px solid var(--accent-l); outline-offset:2px; }
    body:not(.wz-on) .bar .back, body.wz-on.wz-first .bar .back { display:none; }

    /* ── Pakketkaarten ── */
    .intro-note { margin:0 0 18px 52px; font-size:13px; color:var(--cyan-l); background:rgba(6,182,212,.07); border:1px solid rgba(6,182,212,.22); border-radius:12px; padding:10px 16px; display:inline-block; }
    .cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:18px; align-items:stretch; }
    .pkg { position:relative; display:flex; flex-direction:column; background:var(--card); border:1px solid var(--border); border-radius:18px; padding:26px 22px 22px; cursor:pointer; transition:transform .2s, border-color .2s, box-shadow .2s; }
    .pkg:hover { transform:translateY(-3px); border-color:var(--border-a); }
    .pkg:focus-visible { outline:2px solid var(--accent-l); outline-offset:2px; }
    .pkg.sel { border-color:var(--accent); box-shadow:0 0 0 1px var(--accent), 0 18px 48px var(--glow); background:var(--card2); }
    .pkg .badge { position:absolute; top:14px; right:14px; background:var(--grad); color:var(--wit); font-size:9.5px; font-weight:800; letter-spacing:.08em; padding:4px 11px; border-radius:99px; }
    .pkg h3 { color:var(--bright); font-size:18px; font-weight:700; }
    .pkg .pages { font-size:12px; color:var(--muted); margin-bottom:14px; }
    .pkg .price-row { display:flex; align-items:baseline; gap:9px; }
    .pkg .old { color:var(--muted); text-decoration:line-through; font-size:15px; }
    .pkg .now { color:var(--bright); font-size:32px; font-weight:800; letter-spacing:-.02em; }
    .pkg .once { color:var(--muted); font-size:12px; }
    .pkg .pm { color:var(--accent-l); font-size:12.5px; font-weight:600; margin:2px 0 16px; }
    .pkg .intro-chip { display:inline-block; margin-bottom:10px; font-size:10.5px; font-weight:800; letter-spacing:.06em; color:#0b1220; background:var(--cyan-l); border-radius:99px; padding:3px 10px; }
    .pkg ul { list-style:none; display:grid; gap:7px; font-size:13px; padding-top:14px; margin-bottom:18px; border-top:1px solid var(--border); }
    .pkg ul li { display:flex; gap:8px; }
    .pkg ul li::before { content:"✓"; color:var(--green); font-weight:800; flex:none; }
    .pkg .pick { margin-top:auto; text-align:center; border:1px solid var(--border-a); border-radius:99px; padding:10px; font-size:13.5px; font-weight:700; color:var(--accent-l); transition:background .2s,color .2s; }
    .pkg.sel .pick { background:var(--ch-knop); color:var(--wit); border-color:var(--accent); }
    .scope { font-size:11.5px; color:var(--muted); margin:16px 0 0 52px; max-width:78ch; line-height:1.7; }

    /* ── Opties ── */
    .opts { display:grid; gap:10px; }
    .opt { display:flex; align-items:center; gap:16px; background:var(--card); border:1px solid var(--border); border-radius:14px; padding:15px 18px; transition:border-color .2s; }
    .opt:hover { border-color:var(--border-a); }
    .opt.on { border-color:var(--accent); background:var(--card2); }
    .opt .nm { flex:1; font-size:14.5px; color:var(--bright); font-weight:600; }
    .opt .nm
    .opt .pr { color:var(--accent-l); font-weight:700; font-size:14px; white-space:nowrap; }
    .switch { position:relative; width:44px; height:24px; flex:none; }
    .switch input { position:absolute; opacity:0; width:100%; height:100%; margin:0; cursor:pointer; }
    .switch .tr { position:absolute; inset:0; background:rgba(255,255,255,.1); border-radius:99px; transition:background .2s; pointer-events:none; }
    .switch .tr::after { content:""; position:absolute; top:3px; left:3px; width:18px; height:18px; background:var(--wit); border-radius:50%; transition:transform .2s; }
    .switch input:checked + .tr { background:var(--accent); }
    .switch input:checked + .tr::after { transform:translateX(20px); }
    .switch input:focus-visible + .tr { outline:2px solid var(--accent-l); outline-offset:2px; }
    .stepper { display:flex; align-items:center; gap:0; flex:none; border:1px solid var(--border); border-radius:99px; overflow:hidden; }
    .stepper button { width:44px; height:44px; background:rgba(255,255,255,.04); border:0; color:var(--bright); font-size:17px; cursor:pointer; }
    .stepper button:hover { background:rgba(91,140,255,.25); }
    .stepper output { width:36px; text-align:center; font-weight:700; color:var(--bright); font-size:14px; }

    /* ── Formulier ── */
    .formcard { background:var(--card); border:1px solid var(--border); border-radius:18px; padding:26px 24px 14px; }
    .grid2 { display:grid; grid-template-columns:1fr 1fr; gap:0 18px; }
    @media (max-width:680px){ .grid2 { grid-template-columns:1fr; } }
    .field { margin-bottom:18px; }
    .field label { display:block; font-size:12.5px; color:var(--accent-l); margin-bottom:6px; font-weight:700; letter-spacing:.02em; }
    .field input, .field select, .field textarea { width:100%; background:var(--bg2); border:1px solid var(--border); color:var(--bright); border-radius:11px; padding:12px 14px; font-size:14.5px; font-family:inherit; min-height:46px; transition:border-color .2s; }
    .field textarea { min-height:92px; resize:vertical; }
    /* GEMETEN 20 augustus 2026: `#4a5268` haalt 2,49:1 en dat is nauwelijks te lezen.
       Een placeholder is voor WCAG gewone TEKST — er is geen uitzondering voor. `#7b8194`
       geeft 4,99:1: leesbaar, en nog steeds duidelijk zwakker dan een ingevulde waarde,
       zodat een lege invoer niet als gevulde leest. Die waarde bestond al elders in de
       codebase; een nieuwe kleur verzinnen zou een vierde grijstint toevoegen. */
    .field ::placeholder { color:#7b8194; }
    .field input:focus, .field select:focus, .field textarea:focus { outline:none; border-color:var(--accent); box-shadow:0 0 0 3px rgba(91,140,255,.18); }
    .field select { appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23A78BFA' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 15px center; padding-right:38px; }

    /* ── Offerte-indicatie ── */
    .quote { background:var(--card); border:1px solid var(--border-a); border-radius:18px; padding:24px; margin-top:52px; display:none; }
    .quote.show { display:block; }
    .quote h2 { color:var(--bright); font-size:17px; font-weight:700; margin-bottom:4px; }
    .quote .qsub { font-size:12px; color:var(--muted); margin-bottom:16px; }
    .quote .row { display:flex; justify-content:space-between; gap:16px; font-size:14px; padding:9px 0; border-bottom:1px solid rgba(255,255,255,.05); }
    .quote .row .lbl { color:var(--text); }
    .quote .row .lbl .sub { display:block; font-size:11.5px; color:var(--muted); }
    .quote .row .val { color:var(--bright); font-weight:600; white-space:nowrap; }
    .quote .row .val .was { color:var(--muted); text-decoration:line-through; font-weight:400; margin-right:8px; font-size:12.5px; }
    .quote .row.korting .val { color:var(--cyan-l); }
    .quote .row.total { border-bottom:0; padding-top:14px; }
    .quote .row.total .lbl { color:var(--bright); font-weight:700; font-size:15px; }
    .quote .row.total .val { font-size:22px; font-weight:800; }
    .quote .row.monthly { border-bottom:0; padding-top:0; }
    .quote .row.monthly .val { color:var(--accent-l); }
    .quote .qnote { font-size:11.5px; color:var(--muted); margin-top:14px; line-height:1.7; }

    .msg { display:none; margin:16px 0 0; padding:12px 16px; border-radius:12px; font-size:13.5px; }
    .msg.show { display:block; background:rgba(240,89,79,.1); color:var(--rood-zachter); border:1px solid rgba(240,89,79,.35); }

    /* ── Prijsbalk ── */
    .bar { position:fixed; left:0; right:0; bottom:0; background:rgba(9,10,18,.92); -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); border-top:1px solid var(--border-a); padding:14px 20px calc(14px + env(safe-area-inset-bottom)); z-index:60; box-shadow:0 -18px 50px rgba(0,0,0,.45); }
    .bar-in { max-width:1040px; margin:0 auto; display:flex; align-items:center; gap:18px; flex-wrap:wrap; }
    .bar .tot { flex:1; min-width:210px; }
    .bar .tot .amount { color:var(--bright); font-size:22px; font-weight:800; letter-spacing:-.01em; }
    .bar .tot .amount .chip { display:inline-block; vertical-align:3px; margin-left:8px; font-size:10px; font-weight:800; letter-spacing:.05em; color:#0b1220; background:var(--cyan-l); border-radius:99px; padding:2px 9px; }
    .bar .tot .detail { color:var(--muted); font-size:12.5px; }
    /* Eigen .btn-definitie verwijderd (26 juli 2026): de basis staat nu één keer in
       merk.css. Deze had radius 99px, een rand van 2px en een glow-schaduw op hover —
       drie dingen die het ontwerpsysteem uitsluit (regel 1.5: geen glow als decoratie),
       en die alleen op dit scherm zo waren. Wat hier stond gaf dezelfde klassenaam een
       ander uiterlijk dan op portal_bi en portal_bi_dossier.
       Alleen de maat blijft lokaal: dit is een bestelscherm, daar mag de hoofdknop
       ruimer zijn dan elders. */
    .btn { padding:13px 26px; font-size:15px; min-height:48px; }

    /* ── Bevestiging ── */
    .done { text-align:center; padding:90px 20px; display:none; }
    .done .check { width:76px; height:76px; margin:0 auto 22px; display:grid; place-items:center; background:var(--grad); border-radius:50%; font-size:34px; box-shadow:0 18px 48px var(--glow); }
    .done h1 { color:var(--bright); font-size:clamp(24px,4vw,34px); margin-bottom:12px; }
    .done p { color:var(--muted); max-width:52ch; margin:0 auto 10px; }
/* Deze twee kleuren stonden als INLINE stijl in de vertaalwaarden zelf
   (`<strong style="color:var(--bright)">`, `<a style="color:var(--accent-l)">`) — in
   alle drie de talen, dus drie plekken die uiteen konden lopen. De opmaak hoort in de
   stylesheet; de vertaling draagt alleen nog {nadruk} en {link}. */
.done #doneP1 strong { color:var(--bright); }
.done #doneSmall a { color:var(--accent-l); }
    .done .back { display:inline-flex; align-items:center; margin-top:18px; color:var(--accent-l); font-weight:600; min-height:44px; }
    .small { font-size:11.5px; color:var(--muted); }

    @media (prefers-reduced-motion: reduce) { .pkg, .btn { transition:none; } }
    @media (max-width:480px) {
      .step-sub, .scope, .intro-note { margin-left:0; }
      .bar-in { gap:10px; }
      .bar .btn { width:100%; }

      /* Op 390px liep deze pagina 68px buiten beeld — juist de pagina waar iemand
         een website koopt. Twee oorzaken: de kopbalk brak niet af, en de
         keuzerijen waren breder dan het scherm (naam + prijs + schakelaar op één
         regel, met marges die er nog bovenop kwamen). */
      .top { flex-wrap:wrap; row-gap:8px; padding:12px 16px; }
      .top .acct { font-size:12.5px; }
      .opt { flex-wrap:wrap; row-gap:8px; padding:14px 15px; }
      .opt .nm { flex:1 1 100%; min-width:0; order:1; }
      .opt .switch { order:2; }
      .opt .pr { order:3; margin-left:auto; }
    }
