/* FONTS
   Served from this origin, not from Google. Two reasons: the browser used to
   have to reach fonts.googleapis.com and fonts.gstatic.com before it could
   paint any text, and doing so handed every visitor's IP address to Google
   before they had agreed to anything — an awkward position for a Dutch company.
   These are the variable files, latin subset: one per family and style, covering
   every weight the stylesheet asks for. Dutch and English need nothing outside
   latin (ë, ï, é and ö all sit below U+00FF). */
@font-face{font-family:'Cormorant Garamond';font-style:italic;font-weight:400 600;font-display:swap;src:url(fonts/cormorant-garamond-italic.woff2) format('woff2')}
@font-face{font-family:'Cormorant Garamond';font-style:normal;font-weight:400 600;font-display:swap;src:url(fonts/cormorant-garamond.woff2) format('woff2')}
@font-face{font-family:'DM Sans';font-style:normal;font-weight:300 500;font-display:swap;src:url(fonts/dm-sans.woff2) format('woff2')}

*{margin:0;padding:0;box-sizing:border-box}
:root{
  --black:#0a0a08;
  --gold:#b8962e;
  --gold-light:#d4ae52;
  --gold-pale:#f5eecb;
  --sand:#f7f3ec;
  --orange:#e85d20;
  --mid:#3a3a32;
  --muted:#7a7a6a;
  --font-head:'Cormorant Garamond',serif;
  --font-body:'DM Sans',sans-serif;
}
html{scroll-behavior:smooth}
body{font-family:var(--font-body);background:var(--sand);color:var(--black);overflow-x:hidden}

/* NAV */
nav{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:16px 48px;background:var(--black);border-bottom:1px solid rgba(184,150,46,.2)}
.nav-logo{height:36px;width:auto;display:block;border-radius:2px}
.nav-home{display:block;line-height:0}
.nav-right{display:flex;align-items:center;gap:28px}
.nav-links{display:flex;gap:28px;align-items:center}
.nav-links a{font-family:var(--font-body);font-size:12px;font-weight:500;text-decoration:none;color:rgba(245,238,203,.6);letter-spacing:.08em;text-transform:uppercase;transition:color .2s}
.nav-links a:hover{color:var(--gold-light)}
.lang-toggle{display:flex;border:1px solid rgba(184,150,46,.35);border-radius:3px;overflow:hidden}
.lang-btn{font-family:var(--font-body);font-size:11px;font-weight:500;padding:5px 10px;cursor:pointer;border:none;background:transparent;letter-spacing:.08em;text-transform:uppercase;transition:all .15s;color:rgba(245,238,203,.5)}
.lang-btn.active{background:var(--gold);color:var(--black)}
/* Hamburger: hidden until the links no longer fit (see the media query). */
.nav-toggle{display:none;flex-direction:column;justify-content:center;gap:4px;width:36px;height:30px;padding:7px 6px;background:transparent;border:1px solid rgba(184,150,46,.35);border-radius:3px;cursor:pointer}
.nav-toggle span{display:block;height:1.5px;background:var(--gold-pale);opacity:.75;transition:transform .2s,opacity .2s}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(5.5px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-5.5px) rotate(-45deg)}

/* HERO */
.hero{min-height:100vh;display:flex;flex-direction:column;justify-content:flex-end;padding:0 48px 72px;position:relative;overflow:hidden}
.hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center bottom;filter:brightness(.45)}
.hero-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(10,10,8,.92) 0%,rgba(10,10,8,.3) 60%,rgba(10,10,8,.1) 100%)}
.hero-content{position:relative;z-index:2}
.hero-ring{position:absolute;right:-80px;top:50%;transform:translateY(-50%);width:520px;height:520px;border-radius:50%;border:1px solid rgba(184,150,46,.12);z-index:1}
.hero-ring-2{position:absolute;right:-180px;top:50%;transform:translateY(-50%);width:720px;height:720px;border-radius:50%;border:1px solid rgba(184,150,46,.06);z-index:1}
.hero-eyebrow{font-family:var(--font-body);font-size:11px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:24px}
.hero-title{font-family:var(--font-head);font-size:clamp(56px,8.5vw,100px);font-weight:600;line-height:.92;color:var(--gold-pale);margin-bottom:32px;max-width:800px}
.hero-title .italic{font-style:italic;font-weight:400;color:rgba(245,238,203,.4)}
.hero-title .accent{color:var(--orange)}
.hero-sub{font-size:16px;font-weight:300;color:rgba(245,238,203,.6);max-width:460px;line-height:1.75;margin-bottom:44px}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap}
/* These four are links, not buttons — they navigate. The reset below is what
   makes an <a> look exactly like the <button> each of them used to be. */
.btn-primary,.btn-ghost,.avail-btn,.btn-cta,.btn-outline{display:inline-block;text-align:center;text-decoration:none}
.btn-primary{font-family:var(--font-body);font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;padding:14px 32px;background:var(--orange);color:white;border:none;cursor:pointer;border-radius:2px;transition:all .2s}
.btn-primary:hover{background:#d04c10;transform:translateY(-1px)}
.btn-ghost{font-family:var(--font-body);font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;padding:13px 32px;background:transparent;color:var(--gold-pale);border:1px solid rgba(184,150,46,.35);cursor:pointer;border-radius:2px;transition:all .2s}
.btn-ghost:hover{border-color:var(--gold)}

/* MARQUEE */
.marquee-wrap{background:var(--gold);padding:11px 0;overflow:hidden}
.marquee-inner{display:flex;white-space:nowrap;animation:marquee 28s linear infinite}
.marquee-item{font-family:var(--font-body);font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--black);padding:0 36px;opacity:.8}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* AVAILABILITY BANNER */
.avail-banner{background:var(--orange);padding:20px 48px;display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.avail-left{display:flex;align-items:center;gap:14px}
.avail-dot{width:10px;height:10px;border-radius:50%;background:white;animation:pulse 2s ease-in-out infinite;flex-shrink:0}
@keyframes pulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.6;transform:scale(1.3)}}
.avail-text{font-family:var(--font-body);font-size:13px;font-weight:500;color:white;letter-spacing:.02em}
.avail-text strong{font-weight:500}
.avail-sub{font-size:12px;font-weight:300;color:rgba(255,255,255,.8);margin-top:2px}
.avail-btn{font-family:var(--font-body);font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;padding:10px 24px;background:white;color:var(--orange);border:none;cursor:pointer;border-radius:2px;white-space:nowrap;transition:all .2s;flex-shrink:0}
.avail-btn:hover{background:var(--gold-pale)}

/* ABOUT */
.about{padding:110px 48px;display:grid;grid-template-columns:1fr 1fr;gap:72px;align-items:start;background:var(--sand)}
.section-label{font-family:var(--font-body);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:20px}
.section-title{font-family:var(--font-head);font-size:clamp(34px,4vw,52px);font-weight:600;line-height:1.05;color:var(--black);margin-bottom:28px}
.section-title em{color:var(--orange);font-style:italic}
.body-text{font-size:15px;font-weight:300;line-height:1.8;color:var(--mid);margin-bottom:20px}
.about-photo{width:100%;aspect-ratio:3/4;object-fit:cover;object-position:center top;border-radius:3px;display:block;margin-bottom:24px}
.credential{display:flex;gap:16px;align-items:flex-start;padding:16px 0;border-bottom:1px solid rgba(10,10,8,.08)}
.credential:first-child{border-top:1px solid rgba(10,10,8,.08)}
.cred-num{font-family:var(--font-head);font-size:14px;font-weight:600;color:var(--gold);min-width:28px;padding-top:1px;flex-shrink:0}
.cred-body{font-size:13px;font-weight:400;color:var(--mid);line-height:1.6}
.cred-body strong{color:var(--black);font-weight:500}
.cred-body .small{font-size:12px;color:var(--muted)}
.current-block{margin-top:8px;margin-bottom:28px;padding:16px 20px;border-left:2px solid var(--gold);background:rgba(184,150,46,.06);border-radius:0 2px 2px 0}
.current-label{font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin-bottom:6px}
.current-title{font-size:14px;font-weight:500;color:var(--black)}
.current-sub{font-size:13px;color:var(--muted);margin-top:3px}
/* "What this work is really about" — these were 23 inline style attributes on
   the page, which is both hard to edit and the one thing standing between the
   site and a Content-Security-Policy without 'unsafe-inline'. */
.focus-block{margin-bottom:28px}
.focus-label{font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin-bottom:14px}
.focus-list{display:flex;flex-direction:column;gap:10px}
.focus-item{display:flex;gap:12px;align-items:flex-start}
.focus-arrow{color:var(--orange);flex-shrink:0}
.focus-text{font-size:13px;color:var(--mid);line-height:1.6}

/* EXPERIENCE / CV */
.experience{padding:110px 48px;background:var(--black)}
.experience .section-label{color:var(--gold)}
.experience .section-title{color:var(--gold-pale)}
.experience .section-title em{color:var(--orange)}
.exp-intro{font-size:15px;font-weight:300;color:rgba(245,238,203,.55);line-height:1.8;max-width:580px;margin-bottom:56px}
.exp-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px;background:rgba(184,150,46,.1);margin-bottom:2px}
.exp-card{background:var(--black);padding:36px 32px;transition:background .2s}
.exp-card:hover{background:#111108}
.exp-period{font-family:var(--font-body);font-size:10px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--gold);margin-bottom:10px}
.exp-role{font-family:var(--font-head);font-size:20px;font-weight:600;color:var(--gold-pale);line-height:1.15;margin-bottom:6px}
.exp-org{font-size:12px;font-weight:400;color:var(--orange);margin-bottom:14px;letter-spacing:.03em}
.exp-desc{font-size:13px;font-weight:300;color:rgba(245,238,203,.48);line-height:1.7}
.exp-full{background:rgba(184,150,46,.04);border:1px solid rgba(184,150,46,.12);padding:36px 32px;margin-top:2px}
.exp-full-inner{display:grid;grid-template-columns:1fr 1fr;gap:40px}
.edu-block{margin-top:48px;padding-top:40px;border-top:1px solid rgba(184,150,46,.12)}
.edu-title{font-family:var(--font-head);font-size:22px;font-weight:600;color:var(--gold-pale);margin-bottom:24px}
.edu-item{display:flex;gap:16px;padding:12px 0;border-bottom:1px solid rgba(184,150,46,.08)}
.edu-year{font-size:11px;font-weight:500;color:var(--gold);min-width:80px;flex-shrink:0;padding-top:2px;letter-spacing:.04em}
.edu-detail{font-size:13px;color:rgba(245,238,203,.55);line-height:1.5}
.edu-detail strong{color:var(--gold-pale);font-weight:500;display:block;margin-bottom:2px}
.lang-grid{display:flex;gap:12px;flex-wrap:wrap;margin-top:14px}
.lang-pill{font-size:12px;font-weight:400;padding:5px 14px;border:1px solid rgba(184,150,46,.25);border-radius:20px;color:rgba(245,238,203,.6)}
.lang-pill.strong{border-color:rgba(184,150,46,.5);color:var(--gold-light)}
.governance-list{margin-top:16px}
.edu-section{margin-top:28px}
.gov-item{display:flex;gap:12px;align-items:flex-start;padding:10px 0;border-bottom:1px solid rgba(184,150,46,.07)}
.gov-dash{color:var(--gold);flex-shrink:0;font-size:14px}
.gov-text{font-size:13px;font-weight:300;color:rgba(245,238,203,.5);line-height:1.6}

/* SERVICES */
.services{padding:110px 48px;background:var(--sand)}
.services-header{margin-bottom:56px}
.services-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;background:rgba(10,10,8,.06)}
.service-card{background:var(--sand);padding:44px 32px;transition:background .25s;border:1px solid rgba(10,10,8,.06)}
.service-card:hover{background:white}
.service-num{font-family:var(--font-body);font-size:10px;font-weight:500;letter-spacing:.14em;color:var(--gold);margin-bottom:20px;text-transform:uppercase}
.service-name{font-family:var(--font-head);font-size:22px;font-weight:600;color:var(--black);margin-bottom:16px;line-height:1.2}
.service-desc{font-size:13px;font-weight:300;color:var(--muted);line-height:1.75}
.service-tag{display:inline-block;margin-top:20px;font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--orange);border-bottom:1px solid var(--orange);padding-bottom:1px}

/* INSIGHTS */
.insights{padding:110px 48px;background:var(--black)}
.insights .section-label{color:var(--gold)}
.insights .section-title{color:var(--gold-pale)}
.articles{display:grid;grid-template-columns:repeat(3,1fr);gap:2px;margin-top:44px;background:rgba(184,150,46,.1)}
.article-card{display:block;background:var(--black);padding:32px;cursor:pointer;text-decoration:none;color:inherit;transition:background .2s}
.article-card:hover{background:#111108}
/* A teaser card is a div rather than an anchor: it announces a piece that has
   nowhere to go yet, so it must not offer a hand cursor or light up on hover. */
div.article-card{cursor:default}
div.article-card:hover{background:var(--black)}
.article-tag{font-family:var(--font-body);font-size:10px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--gold);margin-bottom:14px}
.article-title{font-family:var(--font-head);font-size:20px;font-weight:600;color:var(--gold-pale);line-height:1.3;margin-bottom:12px}
.article-desc{font-size:13px;font-weight:300;color:rgba(245,238,203,.45);line-height:1.65}
.article-arrow{margin-top:22px;font-size:12px;font-weight:500;letter-spacing:.06em;color:var(--orange);text-transform:uppercase}

/* PUBLICATION PAGE — one page renders every own article from publications.json */
.publication{max-width:720px;margin:0 auto;padding:148px 24px 96px;min-height:100vh}
.pub-meta{font-family:var(--font-body);font-size:11px;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:18px}
.pub-title{font-family:var(--font-head);font-size:clamp(32px,5vw,52px);font-weight:600;line-height:1.08;color:var(--black);margin-bottom:36px}
.pub-body p{font-size:16px;font-weight:300;line-height:1.85;color:var(--mid);margin-bottom:22px}
.pub-body h2{font-family:var(--font-head);font-size:26px;font-weight:600;color:var(--black);margin:40px 0 14px}
.pub-back{display:inline-block;margin-top:44px;font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--orange);text-decoration:none;border-bottom:1px solid var(--orange);padding-bottom:2px}

/* 404 — no nav, on purpose: the one thing this page owes the visitor is a way
   back, not a full menu. */
.notfound{min-height:100vh;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;max-width:640px;margin:0 auto;padding:48px 24px}
.notfound-logo{height:44px;width:auto;border-radius:2px;margin-bottom:40px}
.notfound-title{font-family:var(--font-head);font-size:clamp(36px,6vw,60px);font-weight:600;line-height:1.05;color:var(--black);margin-bottom:24px}
.notfound-title em{color:var(--orange);font-style:italic}
.notfound-sub{font-size:15px;font-weight:300;line-height:1.8;color:var(--mid);margin-bottom:36px}
.notfound-actions{display:flex;gap:14px;flex-wrap:wrap}

/* CTA */
.cta{padding:110px 48px;background:var(--sand);display:flex;justify-content:space-between;align-items:center;gap:48px;border-top:1px solid rgba(10,10,8,.08);flex-wrap:wrap}
.cta-title{font-family:var(--font-head);font-size:clamp(32px,4vw,52px);font-weight:600;color:var(--black);line-height:1.05;margin-bottom:20px}
.cta-title em{color:var(--orange);font-style:italic}
.cta-sub{font-size:15px;font-weight:300;color:var(--mid);line-height:1.75;max-width:520px}
.cta-email{margin-top:20px;font-size:14px;color:var(--gold);font-weight:400}
.btn-cta{font-family:var(--font-body);font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;padding:16px 36px;background:var(--orange);color:white;border:none;cursor:pointer;border-radius:2px;transition:all .2s;white-space:nowrap;flex-shrink:0}
.btn-cta:hover{background:#d04c10;transform:translateY(-1px)}
.cta-actions{display:flex;gap:14px;flex-wrap:wrap;flex-shrink:0}
.btn-outline{font-family:var(--font-body);font-size:12px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;padding:15px 34px;background:transparent;color:var(--black);border:1px solid rgba(10,10,8,.22);border-radius:2px;transition:all .2s;white-space:nowrap}
.btn-outline:hover{border-color:var(--gold);color:var(--gold)}

/* FOOTER */
footer{padding:32px 48px;background:#060604;display:flex;justify-content:space-between;align-items:center;border-top:1px solid rgba(184,150,46,.1)}
.footer-logo{height:28px;width:auto;opacity:.7}
.footer-sub{font-size:11px;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:rgba(184,150,46,.4)}
.footer-links{display:flex;gap:20px;flex-wrap:wrap;justify-content:center}
.footer-links a{font-size:11px;color:rgba(245,238,203,.45);text-decoration:none;letter-spacing:.03em;transition:color .2s}
.footer-links a:hover{color:var(--gold-light)}
.footer-copy{font-size:11px;color:rgba(245,238,203,.2)}

/* FOCUS
   The default focus ring is a thin dark outline — invisible against the black
   sections, where most of the links are. This one works on both grounds. */
a:focus-visible,button:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:2px}

/* ANIMATIONS */
@keyframes fadeUp{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
.hero-eyebrow{animation:fadeUp .6s ease both .3s;opacity:0}
.hero-title{animation:fadeUp .7s ease both .5s;opacity:0}
.hero-sub{animation:fadeUp .7s ease both .7s;opacity:0}
.hero-actions{animation:fadeUp .7s ease both .9s;opacity:0}

/* LANG
   The class sits on <html> so the boot script in the page head can set the
   language before the first paint. Nothing carries an inline display style any
   more: these four rules are the whole toggle, and they apply to the cards
   site.js generates just as well as to the markup. */
[data-nl]{display:none}
.nl [data-en]{display:none}
.nl [data-nl]{display:block}
.nl span[data-nl]{display:inline}

/* Some people disable animation because motion makes them ill. The hero text
   starts at opacity:0 and is animated in, so it has to be handed back rather
   than simply stopped, and the marquee has to come to rest somewhere readable. */
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
  .hero-eyebrow,.hero-title,.hero-sub,.hero-actions{opacity:1;animation:none}
  .marquee-inner{animation:none}
}

/* RESPONSIVE */
@media(max-width:768px){
  nav{padding:14px 20px}
  /* The links used to be set to display:none here with nothing to bring them
     back — on a phone the whole menu was simply missing. They now fold into a
     panel under the bar; the language toggle stays where it is. */
  .nav-right{gap:14px}
  .nav-links{display:none}
  .nav-links.open{display:flex;position:absolute;top:100%;left:0;right:0;flex-direction:column;align-items:stretch;gap:0;padding:4px 20px 14px;background:var(--black);border-bottom:1px solid rgba(184,150,46,.2)}
  .nav-links.open a{display:block;padding:15px 0;font-size:13px;border-bottom:1px solid rgba(184,150,46,.08)}
  .nav-links.open a:last-child{border-bottom:none}
  .nav-toggle{display:flex}
  .hero{padding:0 20px 56px}
  .avail-banner{padding:16px 20px}
  .about{grid-template-columns:1fr;padding:72px 20px;gap:40px}
  .experience{padding:72px 20px}
  .exp-grid{grid-template-columns:1fr}
  .exp-full-inner{grid-template-columns:1fr}
  .services{padding:72px 20px}
  .services-grid{grid-template-columns:1fr}
  .insights{padding:72px 20px}
  .publication{padding:110px 20px 64px}
  .articles{grid-template-columns:1fr}
  .cta{padding:72px 20px;flex-direction:column;align-items:flex-start}
  footer{padding:24px 20px;flex-direction:column;gap:12px;text-align:center}
}
