img{max-width:100%;} [hidden]{display:none!important;}
  :root{--font-display:'Neue Montreal','Hanken Grotesk',system-ui,sans-serif; --font-body:'Neue Montreal','Hanken Grotesk',system-ui,sans-serif; --font-mono:'IBM Plex Mono',"SF Mono",monospace; --ruby:#B3122B; --ruby-text:#D8233F; --ruby-tint:rgba(179,18,43,.10);}
  .rv{opacity:0; transform:translateY(14px); transition:opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1);}
  .rv.in{opacity:1; transform:none;}
  .vb-progress{position:fixed; top:0; left:0; height:2px; width:0; background:var(--ruby); z-index:50; pointer-events:none; transition:width .08s linear;}
  .vb-wm{position:fixed; left:50%; top:50%; width:min(84vw,1100px); z-index:0; pointer-events:none; opacity:.065; will-change:transform; transform:translate(-50%,-50%) rotate(-6deg);}
  .vb-wm img{display:block; width:100%; height:auto;}
  html[data-vb-theme="auto"] .vb-wm img{filter:invert(1);}
  @media (prefers-color-scheme: dark){ html[data-vb-theme="auto"]:not([data-theme="light"]) .vb-wm img{filter:none;} }
  html[data-theme="dark"] .vb-wm img{filter:none !important;}
  .sheet, .wrap{position:relative; z-index:1;}
  .vb-w{display:inline-block; overflow:hidden; vertical-align:top;}
  .vb-w > span{display:inline-block; transform:translateY(110%); animation:vbUp .8s cubic-bezier(.2,.8,.2,1) forwards;}
  @keyframes vbUp{to{transform:translateY(0)}}
  .vb-top{position:fixed; right:18px; bottom:18px; z-index:45; width:42px; height:42px; border-radius:50%; border:1px solid rgba(179,18,43,.7); background:rgba(14,14,14,.8); color:#f2efe6; display:flex; align-items:center; justify-content:center; text-decoration:none; font-family:var(--font-mono); font-size:14px; opacity:0; transform:translateY(12px); transition:opacity .35s, transform .35s, background .25s; backdrop-filter:blur(6px);}
  .vb-top.show{opacity:1; transform:none;}
  .vb-top:hover{background:var(--ruby);}

  /* toegangspoort */
  html:not(.vb-in){overflow:hidden;}
  html:not(.vb-in) .vb-w > span{animation-play-state:paused;}
  .vb-gate{position:fixed; inset:0; z-index:100; background:#0b0b0b; color:#f3f1ec; font-family:var(--font-body); display:flex; align-items:center; justify-content:center; padding:24px; overflow:hidden;}
  html.vb-in:not(.vb-open) .vb-gate{display:none;}
  .vb-gate::before, .vb-gate::after{content:""; position:absolute; left:0; right:0; height:50%; background:#0b0b0b; z-index:0; transition:transform 1.1s cubic-bezier(.76,0,.24,1);}
  .vb-gate::before{top:0; border-bottom:1px solid rgba(179,18,43,.0);}
  .vb-gate::after{bottom:0;}
  .vb-gate.open::before{transform:translateY(-101%);}
  .vb-gate.open::after{transform:translateY(101%);}
  .vb-gate.open{background:transparent; pointer-events:none;}
  .vb-gate .g{position:relative; z-index:1; width:min(420px,100%); text-align:center; transition:opacity .5s, transform .5s;}
  .vb-gate.ok .g{opacity:0; transform:translateY(-10px); pointer-events:none;}
  .vb-gate .g img{height:34px; width:auto; margin:0 auto 34px; display:block; animation:vbBreathe 3.2s ease-in-out infinite;}
  @keyframes vbBreathe{0%,100%{opacity:.85; transform:scale(1)} 50%{opacity:1; transform:scale(1.04)}}
  .vb-gate .g .ey{font-family:var(--font-mono); font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:#D8233F; display:block; margin-bottom:12px;}
  .vb-gate .g h2{font-family:var(--font-display); font-weight:700; font-size:clamp(2rem,7vw,2.8rem); letter-spacing:-.03em; line-height:1; margin:0 0 12px;}
  .vb-gate .g p{color:#9a978f; font-size:.98rem; margin:0 0 26px;}
  .vb-gate form{display:flex; flex-direction:column; gap:10px;}
  .vb-gate input{width:100%; box-sizing:border-box; background:#121212; border:1px solid #383838; border-radius:8px; color:#f3f1ec; font-family:var(--font-mono); font-size:15px; letter-spacing:.18em; text-transform:uppercase; text-align:center; padding:14px 16px; outline:none; transition:border-color .2s, box-shadow .2s;}
  .vb-gate input:focus{border-color:#D8233F; box-shadow:0 0 0 3px rgba(179,18,43,.18);}
  .vb-gate input::placeholder{color:#5b5952; letter-spacing:.08em; text-transform:none;}
  .vb-gate button{border:0; border-radius:999px; background:#B3122B; color:#f3f1ec; font-family:var(--font-body); font-weight:600; font-size:14.5px; padding:14px 18px; cursor:pointer; transition:background .2s, transform .2s;}
  .vb-gate button:hover{background:#cf1a35; transform:translateY(-1px);}
  .vb-gate .err{min-height:20px; font-size:13px; color:#D8233F; margin-top:6px; opacity:0; transition:opacity .2s;}
  .vb-gate.bad .err{opacity:1;}
  .vb-gate.bad input{border-color:#D8233F; animation:vbShake .4s;}
  @keyframes vbShake{0%,100%{transform:translateX(0)} 20%{transform:translateX(-7px)} 40%{transform:translateX(7px)} 60%{transform:translateX(-5px)} 80%{transform:translateX(5px)}}
  .vb-gate .g small{display:block; margin-top:26px; font-family:var(--font-mono); font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; color:#5b5952;}
  .vb-gate .g small a{color:#9a978f; text-decoration:none;}
  .vb-gate .w{position:absolute; inset:0; z-index:1; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; opacity:0; pointer-events:none; padding:24px;}
  .vb-gate.ok .w{opacity:1; transition:opacity .4s .3s;}
  .vb-gate.open .w{opacity:0; transition:opacity .4s;}
  .vb-gate .w img{height:44px; width:auto; margin-bottom:26px; transform:scale(.7); opacity:0;}
  .vb-gate.ok .w img{animation:vbPop .8s cubic-bezier(.2,.8,.2,1) .25s forwards;}
  @keyframes vbPop{to{transform:scale(1); opacity:1}}
  .vb-gate .w h3{font-family:var(--font-display); font-weight:700; font-size:clamp(2.2rem,8vw,4rem); letter-spacing:-.035em; line-height:1; margin:0;}
  .vb-gate .w h3 span{display:inline-block; overflow:hidden; vertical-align:top;}
  .vb-gate .w h3 span i{display:inline-block; font-style:normal; transform:translateY(110%);}
  .vb-gate.ok .w h3 span i{animation:vbUp .8s cubic-bezier(.2,.8,.2,1) forwards;}
  .vb-gate .w .line{width:0; height:2px; background:#B3122B; margin:22px auto 0;}
  .vb-gate.ok .w .line{animation:vbLine .9s cubic-bezier(.2,.8,.2,1) .9s forwards;}
  @keyframes vbLine{to{width:120px}}
  .vb-gate .w .sub{margin-top:14px; font-family:var(--font-mono); font-size:11px; letter-spacing:.16em; text-transform:uppercase; color:#9a978f; opacity:0;}
  .vb-gate.ok .w .sub{animation:vbFade .6s 1.3s forwards;}
  @keyframes vbFade{to{opacity:1}}
  @media (prefers-reduced-motion: reduce){ .vb-gate *{animation:none !important; transition:none !important;} }
  @media (prefers-reduced-motion: reduce){ .rv{opacity:1; transform:none; transition:none;} .vb-w > span{animation:none; transform:none;} .vb-wm{display:none;} }
