:root{
  --nacht:#171A26;
  --blauw:#2D3E6B;
  --patina:#6B8068;
  --patina-diep:#55684F;
  --lucht:#7FB2D9;
  --ivoor:#EDEAE2;
  --ivoor-diep:#E2DED2;
  --brons:#B08D57;
  --wit:#F7F5F0;
  --maxw:1280px;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:'Archivo',sans-serif;
  font-weight:300;
  background:var(--nacht);
  color:var(--wit);
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
::selection{background:var(--patina);color:var(--wit)}

/* ---------- typografie ---------- */
.display{font-family:'Fraunces',serif;font-weight:300;line-height:1.05;letter-spacing:-0.01em}
.label{
  font-size:0.72rem;letter-spacing:0.28em;text-transform:uppercase;
  font-weight:500;opacity:0.65;
}
.sectitle{font-size:clamp(2.2rem,5vw,3.6rem)}
.sectitle em{font-style:italic;color:var(--patina)}
.licht .sectitle em{color:var(--patina-diep)}

/* ---------- nav ---------- */
header{
  position:fixed;inset:0 0 auto 0;z-index:100;
  display:flex;justify-content:space-between;align-items:center;
  padding:1.3rem clamp(1.2rem,4vw,3rem);
  transition:background 0.4s, box-shadow 0.4s;
}
header.vast{background:rgba(23,26,38,0.92);backdrop-filter:blur(12px);box-shadow:0 1px 0 rgba(247,245,240,0.08)}
.logo{font-family:'Fraunces',serif;font-size:1.95rem;font-weight:400}
.logo em{font-style:italic;color:var(--patina)}
nav{display:flex;gap:2.2rem}
nav a{font-size:0.82rem;letter-spacing:0.12em;text-transform:uppercase;opacity:0.75;transition:opacity 0.25s}
nav a:hover,nav a:focus-visible{opacity:1}
nav a:focus-visible,.knop:focus-visible{outline:2px solid var(--lucht);outline-offset:4px}
.menuknop{display:none;background:none;border:0;color:var(--wit);font-size:1.6rem;cursor:pointer}

/* ---------- hero ---------- */
.hero{
  min-height:100vh;
  display:grid;grid-template-columns:1.15fr 0.85fr;gap:clamp(2rem,5vw,5rem);
  align-items:center;
  max-width:var(--maxw);margin:0 auto;
  padding:clamp(7rem,14vh,9rem) clamp(1.2rem,4vw,3rem) 3rem;
  position:relative;
}
.hero-tekst .label{color:var(--lucht);opacity:1;margin-bottom:1.6rem;display:block}
.hero-titel{font-size:clamp(3rem,7.5vw,6.2rem);margin-bottom:2rem}
.hero-titel em{font-style:italic;color:var(--patina)}
.hero-intro{max-width:34rem;font-size:1.06rem;color:rgba(247,245,240,0.75);margin-bottom:2.6rem}
.knop{
  display:inline-block;
  font-size:0.8rem;letter-spacing:0.2em;text-transform:uppercase;font-weight:500;
  padding:1rem 2.4rem;
  border:1px solid var(--patina);color:var(--wit);
  transition:background 0.3s,color 0.3s;
}
.knop:hover{background:var(--patina);color:var(--nacht)}
.knop.vol{background:var(--patina);color:var(--nacht)}
.knop.vol:hover{background:var(--wit)}

/* signatuur: de boognis */
.nis{
  border-radius:999px 999px 0 0;
  overflow:hidden;
  background:var(--blauw);
  position:relative;
}
.nis img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s cubic-bezier(.2,.7,.3,1)}
.hero-nis{aspect-ratio:1/1;max-height:72vh;border-radius:18px;box-shadow:0 40px 80px -30px rgba(0,0,0,0.6)}
.hero-nis::after{
  content:"";position:absolute;inset:0;
  border-radius:inherit;
  border:1px solid rgba(247,245,240,0.18);
  pointer-events:none;
}
.hero-nis img{animation:ademen 22s ease-in-out infinite alternate}

/* diavoorstelling in de hero */
.hero-nis .dia{position:absolute;inset:0;opacity:0;transition:opacity 1.4s ease}
.hero-nis .dia img{
  width:100%;height:100%;
  /* de uitgelichte foto's zijn uitgeknipt met een doorzichtige achtergrond,
     dus 'contain': dan valt het hele werk binnen de nis */
  object-fit:contain;
}
/* zonder JavaScript blijft simpelweg de eerste foto staan */
.hero-nis .dia:first-child{opacity:1}
.hero-nis.draait .dia{opacity:0}
.hero-nis.draait .dia.actief{opacity:1}
@keyframes ademen{from{transform:scale(1)}to{transform:scale(1.07)}}

/* materialen-lint */
.lint{
  border-top:1px solid rgba(247,245,240,0.12);
  border-bottom:1px solid rgba(247,245,240,0.12);
  overflow:hidden;white-space:nowrap;
  padding:1.1rem 0;
  background:rgba(45,62,107,0.25);
}
.lint-baan{display:inline-block;animation:schuif 38s linear infinite}
.lint span{
  font-family:'Fraunces',serif;font-style:italic;font-size:1.15rem;
  color:rgba(247,245,240,0.6);
  margin:0 1.6rem;
}
.lint b{color:var(--patina);font-weight:400;margin:0 0.4rem}
@keyframes schuif{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------- secties ---------- */
section{padding:clamp(5rem,10vw,8.5rem) clamp(1.2rem,4vw,3rem)}
.binnen{max-width:var(--maxw);margin:0 auto}
.licht{background:var(--ivoor);color:var(--nacht)}
.patinavlak{background:var(--patina);color:var(--wit)}

/* over */
.over-grid{display:grid;grid-template-columns:0.8fr 1.2fr;gap:clamp(2.5rem,6vw,6rem);align-items:center}
.over-nis{aspect-ratio:3/4;border-radius:18px;overflow:hidden;background:var(--ivoor-diep)}
.over-nis img{width:100%;height:100%;object-fit:cover}
.over-tekst .label{color:var(--patina-diep);opacity:1;display:block;margin-bottom:1.4rem}
.over-tekst p{color:rgba(23,26,38,0.75);max-width:36rem;margin-bottom:1.2rem}
.over-tekst .sectitle{margin-bottom:1.8rem}
.kracht{
  font-family:'Fraunces',serif;font-style:italic;font-size:1.35rem;
  color:var(--patina-diep);
  border-left:2px solid var(--patina);
  padding-left:1.4rem;margin:2rem 0 0;
  max-width:32rem;line-height:1.5;
}

/* collectie */
.collectie-kop{display:flex;justify-content:space-between;align-items:flex-end;gap:2rem;margin-bottom:3.5rem;flex-wrap:wrap}
.collectie-kop .label{color:var(--lucht);opacity:1;display:block;margin-bottom:1.2rem}
.discipline{margin-bottom:clamp(3rem,6vw,5rem)}
.discipline:last-child{margin-bottom:0}
.disc-kop{
  display:flex;align-items:baseline;gap:1.2rem;
  margin-bottom:1.4rem;
  border-bottom:1px solid rgba(247,245,240,0.12);
  padding-bottom:0.9rem;
}
.disc-kop h3{font-family:'Fraunces',serif;font-weight:300;font-style:italic;font-size:clamp(1.5rem,3vw,2.1rem)}
.disc-kop .aantal{font-size:0.75rem;letter-spacing:0.2em;color:var(--patina)}
.strook{
  display:flex;gap:1rem;
  overflow-x:auto;
  padding-bottom:1rem;
  scroll-snap-type:x proximity;
  scrollbar-width:thin;scrollbar-color:var(--patina) transparent;
}
.strook::-webkit-scrollbar{height:5px}
.strook::-webkit-scrollbar-thumb{background:var(--patina);border-radius:99px}
.werk{
  flex:0 0 auto;
  width:clamp(200px,24vw,290px);
  aspect-ratio:1/1;
  border-radius:18px;
  overflow:hidden;
  background:var(--blauw);
  scroll-snap-align:start;
  position:relative;
}
.werk img{width:100%;height:100%;object-fit:cover;transition:transform 0.7s cubic-bezier(.2,.7,.3,1)}
.werk:hover img{transform:scale(1.06)}

/* werkwijze */
.patinavlak .label{color:var(--nacht);opacity:0.6;display:block;margin-bottom:1.2rem}
.patinavlak .sectitle{margin-bottom:3rem}
.patinavlak .sectitle em{color:var(--ivoor)}
.stappen{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem}
.stap{border-top:1px solid rgba(247,245,240,0.35);padding-top:1.3rem}
.stap .nr{font-family:'Fraunces',serif;font-style:italic;font-size:1.6rem;color:var(--ivoor);display:block;margin-bottom:0.6rem}
.stap h4{font-weight:500;font-size:0.95rem;letter-spacing:0.06em;margin-bottom:0.5rem}
.stap p{font-size:0.92rem;color:rgba(247,245,240,0.82)}
.werkwijze-slot{margin-top:3rem;font-family:'Fraunces',serif;font-style:italic;font-size:1.2rem;color:rgba(23,26,38,0.8)}

/* contact */
.contact-grid{display:grid;grid-template-columns:1.1fr 0.9fr;gap:clamp(2.5rem,6vw,6rem);align-items:center}
.contact .label{color:var(--lucht);opacity:1;display:block;margin-bottom:1.4rem}
.mailregel{
  font-family:'Fraunces',serif;font-style:italic;
  font-size:clamp(1.5rem,3.5vw,2.4rem);
  color:var(--wit);
  border-bottom:1px solid var(--patina);
  display:inline-block;padding-bottom:0.3rem;
  transition:color 0.3s;
}
.mailregel:hover{color:var(--patina)}
.contact-info{margin-top:2.2rem;color:rgba(247,245,240,0.7)}
.contact-info b{font-weight:500;color:var(--wit)}
.contact-nis{aspect-ratio:1/1;max-width:380px;justify-self:end;border-radius:18px}

/* footer */
footer{
  border-top:1px solid rgba(247,245,240,0.1);
  padding:2.5rem clamp(1.2rem,4vw,3rem);
  display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;
  font-size:0.85rem;color:rgba(247,245,240,0.55);
}

/* reveal */
.js .reveal{opacity:0;transform:translateY(28px);transition:opacity 0.8s ease,transform 0.8s ease}
.js .reveal.zichtbaar{opacity:1;transform:none}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}
  .js .reveal{opacity:1;transform:none}
}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .hero{grid-template-columns:1fr;padding-top:6.5rem;min-height:auto;gap:3rem}
  .hero-nis{max-width:420px;margin:0 auto}
  .over-grid,.contact-grid{grid-template-columns:1fr}
  .contact-nis{justify-self:start}
  .stappen{grid-template-columns:1fr 1fr}
  .js nav{
    position:fixed;inset:0;background:var(--nacht);
    flex-direction:column;justify-content:center;align-items:center;gap:2rem;
    font-size:1.1rem;
    transform:translateX(100%);transition:transform 0.35s ease;
  }
  .js nav.open{transform:none}
  nav a{font-size:1rem}
  .js .menuknop{display:block;position:relative;z-index:101}
  /* zonder JavaScript blijft de nav een gewone, afbrekende rij */
  html:not(.js) nav{flex-wrap:wrap;gap:0.5rem 1rem;justify-content:flex-end;max-width:62%}
  html:not(.js) nav a{font-size:0.7rem}
}
@media (max-width:560px){
  .stappen{grid-template-columns:1fr}
  .werk{width:70vw}
}

/* ---------- vergroting bij klikken ---------- */
a.werk{display:block;cursor:zoom-in}
a.werk::after{
  content:"";position:absolute;inset:0;
  border-radius:inherit;
  box-shadow:inset 0 0 0 1px rgba(247,245,240,0.14);
  pointer-events:none;
}
a.werk:focus-visible{outline:2px solid var(--lucht);outline-offset:4px}

dialog.vergroot{
  width:min(1100px,92vw);max-width:none;
  margin:auto;
  max-height:90vh;
  padding:0;border:0;
  border-radius:18px;
  background:var(--nacht);color:var(--wit);
  box-shadow:0 40px 100px -20px rgba(0,0,0,0.7);
}
dialog.vergroot::backdrop{background:rgba(10,12,18,0.86)}
.vergroot-binnen{
  display:grid;grid-template-columns:1.35fr 0.65fr;
  max-height:90vh;
}
.vergroot-beeld{
  background:var(--blauw);
  display:flex;align-items:center;justify-content:center;
  min-height:0;
  position:relative;
}
.blader{
  position:absolute;top:50%;transform:translateY(-50%);
  width:2.8rem;height:2.8rem;border-radius:99px;
  background:rgba(23,26,38,0.6);border:1px solid rgba(247,245,240,0.3);
  color:var(--wit);font-size:1.7rem;line-height:1;
  cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:background 0.25s,color 0.25s;
}
.blader:hover{background:var(--patina);color:var(--nacht)}
.blader:focus-visible{outline:2px solid var(--lucht);outline-offset:3px}
.blader.vorige{left:0.8rem}
.blader.volgende{right:0.8rem}
.teller{
  position:absolute;bottom:0.9rem;left:50%;transform:translateX(-50%);
  font-size:0.7rem;letter-spacing:0.16em;
  color:var(--wit);
  background:rgba(23,26,38,0.6);
  padding:0.25rem 0.7rem;border-radius:99px;
  pointer-events:none;
}
.vergroot-beeld img{width:100%;height:100%;max-height:90vh;object-fit:contain}
.vergroot-tekst{
  padding:clamp(1.5rem,3vw,2.6rem);
  overflow-y:auto;
  border-left:1px solid rgba(247,245,240,0.1);
}
.vergroot-tekst h3{
  font-family:'Fraunces',serif;font-weight:300;font-style:italic;
  font-size:clamp(1.4rem,2.4vw,1.9rem);line-height:1.2;
  margin-bottom:1.2rem;
}
.vergroot-tekst dl{margin:0 0 1.4rem;font-size:0.92rem}
.vergroot-tekst dt{
  font-size:0.68rem;letter-spacing:0.22em;text-transform:uppercase;
  color:var(--patina);margin-top:0.9rem;
}
.vergroot-tekst dd{margin:0.15rem 0 0;color:rgba(247,245,240,0.85);white-space:pre-line}
.vergroot-tekst .toelichting{color:rgba(247,245,240,0.7);font-size:0.95rem;margin-bottom:1.6rem}
.sluitknop{
  position:absolute;top:0.7rem;right:0.9rem;z-index:2;
  background:rgba(23,26,38,0.7);border:1px solid rgba(247,245,240,0.25);
  color:var(--wit);font-size:1.4rem;line-height:1;
  width:2.2rem;height:2.2rem;border-radius:99px;cursor:pointer;
}
.sluitknop:hover{background:var(--patina);color:var(--nacht)}
.sluitknop:focus-visible{outline:2px solid var(--lucht);outline-offset:3px}

/* ---------- werkwijze per techniek ---------- */
.techniek-werkwijze{margin-top:clamp(2.5rem,5vw,4rem)}
.techniek-werkwijze:first-of-type{margin-top:2rem}
.techniek-kop{
  display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap;
  border-bottom:1px solid rgba(247,245,240,0.35);
  padding-bottom:0.8rem;margin-bottom:1.8rem;
}
.techniek-kop h3{
  font-family:'Fraunces',serif;font-weight:300;font-style:italic;
  font-size:clamp(1.4rem,2.8vw,2rem);
}
.techniek-kop .aantal{font-size:0.72rem;letter-spacing:0.2em;text-transform:uppercase;color:var(--ivoor);opacity:0.8}

/* ---------- contactformulier ---------- */
.formulier{display:grid;gap:1.1rem;max-width:34rem;margin-top:2.4rem}
.veld{display:grid;gap:0.4rem}
.veld label{
  font-size:0.7rem;letter-spacing:0.22em;text-transform:uppercase;
  color:rgba(247,245,240,0.7);
}
.veld input,.veld textarea{
  font-family:inherit;font-size:1rem;font-weight:300;
  color:var(--wit);
  background:rgba(247,245,240,0.06);
  border:1px solid rgba(247,245,240,0.2);
  border-radius:4px;
  padding:0.8rem 0.9rem;
  width:100%;
}
.veld textarea{min-height:8rem;resize:vertical}
.veld input:focus,.veld textarea:focus{
  outline:2px solid var(--lucht);outline-offset:1px;
  background:rgba(247,245,240,0.1);
}
.veld input::placeholder,.veld textarea::placeholder{color:rgba(247,245,240,0.35)}
.honing{position:absolute;left:-9999px}
.formulier .knop{justify-self:start;border:0;cursor:pointer;font-family:inherit}
.bedankt{
  border-left:2px solid var(--patina);
  padding:0.4rem 0 0.4rem 1.2rem;margin-top:2.4rem;
  font-family:'Fraunces',serif;font-style:italic;font-size:1.2rem;
}

@media (max-width:820px){
  .vergroot-binnen{grid-template-columns:1fr;grid-template-rows:auto 1fr}
  .vergroot-beeld img{max-height:45vh}
  .vergroot-tekst{border-left:0;border-top:1px solid rgba(247,245,240,0.1)}
}
