/* Valcke Totaalprojecten — donkerblauw & wit
   Layout: foto's eerst, veel wit, rustige geometrische letter (Jost), dunne lijnen. */
:root{
  --navy:#182744;      /* merkkleur */
  --navy-deep:#101b33;
  --white:#ffffff;
  --mist:#f3f4f7;
  --line:#e2e5eb;
  --muted:#5a6377;
  --on-navy-muted:#b9c2d4;
  --f:"Jost","Futura","Century Gothic",Arial,sans-serif;
  --wrap:1280px;
  color-scheme:light;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--white);color:var(--navy);font-family:var(--f);font-size:17px;line-height:1.7;font-weight:400}
img{display:block;max-width:100%;height:auto}
a{color:inherit}
p{margin:0}
h1,h2,h3{margin:0;font-weight:400;letter-spacing:-.01em;text-wrap:balance;color:inherit}
h1{font-size:clamp(38px,5.4vw,72px);line-height:1.05}
h2{font-size:clamp(30px,3.4vw,46px);line-height:1.12}
h3{font-size:24px;line-height:1.25}
.wrap{max-width:calc(var(--wrap) + 48px);margin:0 auto;padding-left:max(24px,env(safe-area-inset-left,0px));padding-right:max(24px,env(safe-area-inset-right,0px))}
.kicker{font-size:13px;letter-spacing:.16em;text-transform:uppercase;font-weight:500;color:var(--muted)}
.muted{color:var(--muted)}
.skip{position:absolute;left:16px;top:-80px;background:#fff;padding:10px 14px;z-index:30}
.skip:focus{top:16px}
:focus-visible{outline:2px solid var(--navy);outline-offset:4px}

/* header */
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);background:#fff;z-index:21}
.site-header{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:#fff;border-bottom:1px solid var(--line)}
.header-inner{display:flex;align-items:center;justify-content:space-between;gap:32px;min-height:92px}
.brand img{width:150px}
.nav{display:flex;align-items:center;gap:30px;font-size:16px}
.nav a{text-decoration:none;padding:6px 0;border-bottom:1px solid transparent}
.nav a:hover,.nav a[aria-current="page"]{border-bottom-color:var(--navy)}
.nav .sep{width:1px;height:22px;background:var(--line)}
.nav .tel{font-weight:500}
.menu{display:none;position:relative}
.menu summary{list-style:none;cursor:pointer;font-size:15px;letter-spacing:.12em;text-transform:uppercase;padding:10px 0;font-weight:500}
.menu summary::-webkit-details-marker{display:none}
.menu nav{position:absolute;right:0;top:48px;min-width:250px;background:#fff;border:1px solid var(--line);padding:8px 22px;display:flex;flex-direction:column;box-shadow:0 18px 40px rgba(16,27,51,.12)}
.menu nav a{text-decoration:none;padding:12px 0;border-bottom:1px solid var(--line);font-size:17px}
.menu nav a:last-child{border-bottom:0}

/* knoppen */
.btns{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.btn{display:inline-flex;align-items:center;gap:14px;text-decoration:none;font-size:14px;letter-spacing:.12em;text-transform:uppercase;font-weight:500;padding:16px 26px;background:var(--navy);color:#fff;border:1px solid var(--navy);transition:background .2s,color .2s}
.btn:hover{background:var(--navy-deep)}
.btn.light{background:#fff;color:var(--navy);border-color:#fff}
.btn.light:hover{background:var(--mist)}
.btn.line{background:transparent;color:var(--navy);border-color:var(--navy)}
.btn.line:hover{background:var(--navy);color:#fff}
.btn.line-w{background:transparent;color:#fff;border-color:rgba(255,255,255,.7)}
.btn.line-w:hover{background:#fff;color:var(--navy)}
.btn.soft{background:var(--mist);color:var(--navy);border-color:var(--mist)}
.btn.soft:hover{background:var(--navy);color:#fff;border-color:var(--navy)}
.arrow{font-size:16px;letter-spacing:0}

/* hero */
.hero{position:relative;color:#fff;background:var(--navy)}
.hero img{width:100%;height:clamp(440px,60vw,760px);object-fit:cover;object-position:center 55%}
.hero.sub img{height:clamp(300px,36vw,460px)}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(16,27,51,0) 35%,rgba(16,27,51,.72) 100%)}
.hero .cap{position:absolute;left:0;right:0;bottom:0;z-index:1;padding-block:0 clamp(32px,5vw,64px)}
.hero .cap .wrap{display:flex;flex-direction:column;gap:20px}
.hero h1{max-width:14ch}
.hero.sub h1{max-width:20ch}
.hero .kicker{color:#dfe5f0}

/* secties */
.section{padding-block:clamp(72px,9vw,120px)}
.section.tight{padding-block:clamp(56px,6vw,80px)}
.mist{background:var(--mist)}
.navy{background:var(--navy);color:#fff}
.navy .muted,.navy .kicker{color:var(--on-navy-muted)}
.intro-c{text-align:center;max-width:820px;margin:0 auto;font-size:clamp(20px,2vw,24px);line-height:1.6;font-weight:300}
.head{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:56px;align-items:end;margin-bottom:56px}
.head p{max-width:52ch}

/* diensten */
.services{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.service{display:flex;flex-direction:column;align-items:center;text-align:center;gap:16px;padding:0 32px 44px;text-decoration:none;min-width:0}
.service+.service{border-left:1px solid var(--line)}
.service .ph{width:calc(100% + 64px);margin:0 -32px 16px;aspect-ratio:4/3;max-width:none;overflow:hidden}
.service .ph img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.service:hover .ph img{transform:scale(1.04)}
.service h3{font-size:28px}
.service p{color:var(--muted);max-width:32ch}
.service .btn{margin-top:auto}

/* realisaties */
.stagger{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px;align-items:start}
.pcard{display:flex;flex-direction:column;gap:14px;text-decoration:none;min-width:0}
.pcard .ph{overflow:hidden;aspect-ratio:4/3;max-width:100%}
.pcard .ph img{width:100%;height:100%;object-fit:cover;transition:transform .6s}
.pcard:hover .ph img{transform:scale(1.04)}
.pcard .t{font-size:20px}
.pcard .k{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.stagger .pcard:nth-child(3n+2) .ph{aspect-ratio:3/4}
.stagger .pcard:nth-child(3n+1),.stagger .pcard:nth-child(3n){margin-top:90px}
.pgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:48px 32px}
.pgrid .pcard .ph{aspect-ratio:4/5}

/* split */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(40px,6vw,96px);align-items:center}
.split .ph img{width:100%;aspect-ratio:4/5;object-fit:cover}
.split .txt{display:flex;flex-direction:column;gap:22px;max-width:540px}
.list2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:1px solid var(--line)}
.list2 div{padding:14px 12px 14px 0;border-bottom:1px solid var(--line);font-size:16px}
.navy .list2,.navy .list2 div{border-color:rgba(255,255,255,.18)}
.checks{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.checks li{padding:16px 0 16px 34px;border-bottom:1px solid var(--line);position:relative}
.checks li::before{content:"";position:absolute;left:4px;top:25px;width:14px;height:7px;border-left:1.5px solid var(--navy);border-bottom:1.5px solid var(--navy);transform:rotate(-45deg)}

/* te koop */
.sale{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);align-items:stretch}
.sale .txt{padding:clamp(40px,6vw,80px);display:flex;flex-direction:column;gap:20px;justify-content:center}
.sale .ph{min-height:360px;overflow:hidden}
.sale .ph img{width:100%;height:100%;object-fit:cover}
.badge{align-self:flex-start;border:1px solid rgba(255,255,255,.6);padding:6px 12px;font-size:12px;letter-spacing:.18em;text-transform:uppercase}

/* voordelen CLT */
.benefits{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--line)}
.benefits article{padding:32px 28px 32px 0;border-bottom:1px solid var(--line);display:flex;flex-direction:column;gap:12px}
.benefits article:not(:nth-child(3n+1)){padding-left:28px;border-left:1px solid var(--line)}
.benefits .n{font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.benefits p{color:var(--muted);font-size:16px}
.epc{display:flex;gap:4px;margin-top:6px}
.epc span{font-weight:500;font-size:13px;color:#fff;padding:3px 9px}
.panel{background:#fff;border:1px solid var(--line);padding:28px}
.panel svg{width:100%;height:auto}
.panel .ln{stroke:var(--navy);fill:none}.panel .grain{stroke:#9a7b55;fill:none;opacity:.5}.panel .wood{fill:#efe4d3}.panel .glue{stroke:var(--navy);stroke-width:1.2}
.panel text{font-family:var(--f);font-size:13px;fill:var(--muted)}.panel text.k{fill:var(--navy);font-weight:500}

/* galerij */
.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.gallery figure{margin:0;overflow:hidden}
.gallery img{width:100%;aspect-ratio:4/5;object-fit:cover}
.gallery figure:first-child{grid-column:span 2}
.gallery figure:first-child img{aspect-ratio:auto;height:100%}

/* contact */
.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.ccard{border:1px solid var(--line);padding:32px;display:flex;flex-direction:column;gap:8px;min-width:0}
.ccard .big{font-size:clamp(21px,2vw,26px);text-decoration:none;overflow-wrap:anywhere}
.ccard .big:hover{text-decoration:underline;text-underline-offset:5px}

/* CTA */
.cta{text-align:center;display:flex;flex-direction:column;align-items:center;gap:22px}
.cta p{max-width:58ch;font-size:19px}
.cta .btns{justify-content:center;margin-top:8px}

/* footer */
.site-footer{background:var(--navy-deep);color:#fff;padding-block:80px 32px;font-size:17px}
.fgrid{display:grid;grid-template-columns:minmax(0,1.2fr) repeat(3,minmax(0,1fr));gap:48px;margin-bottom:56px}
.fgrid img{width:190px}
.fgrid h3{font-size:13px;letter-spacing:.16em;text-transform:uppercase;color:var(--on-navy-muted);font-weight:500;margin-bottom:16px}
.fgrid a,.fgrid p{display:block;text-decoration:none;line-height:1.9;color:#fff}
.fgrid a:hover{text-decoration:underline;text-underline-offset:4px}
.ig{display:inline-flex!important;gap:10px;align-items:center}
.ig svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.6}
.fbot{border-top:1px solid rgba(255,255,255,.14);padding-top:24px;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;font-size:14px;color:var(--on-navy-muted)}
.fbot a{color:var(--on-navy-muted)}
.prose{max-width:70ch;display:flex;flex-direction:column;gap:16px}
.prose h2{font-size:26px;margin-top:18px}

@media (max-width:1080px){
  .nav{display:none}.menu{display:block}
  .head,.split,.sale{grid-template-columns:minmax(0,1fr);gap:32px}
  .services{grid-template-columns:minmax(0,1fr);border-bottom:0}
  .service,.service+.service{border-left:0;border-bottom:1px solid var(--line);padding:0 0 40px}
  .service .ph{width:100%;margin:0 0 12px}
  .stagger,.pgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stagger .pcard:nth-child(n){margin-top:0}.stagger .pcard .ph{aspect-ratio:4/3!important}
  .benefits{grid-template-columns:repeat(2,minmax(0,1fr))}
  .benefits article,.benefits article:not(:nth-child(3n+1)){padding:28px 24px 28px 0;border-left:0}
  .fgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .cards{grid-template-columns:minmax(0,1fr)}
  .sale .ph{min-height:300px}
}
@media (max-width:640px){
  body{font-size:16px}
  .header-inner{min-height:76px}.brand img{width:124px}
  .stagger,.pgrid,.benefits,.fgrid,.list2{grid-template-columns:minmax(0,1fr)}
  .gallery{grid-template-columns:minmax(0,1fr)}.gallery figure:first-child{grid-column:auto}.gallery figure:first-child img{aspect-ratio:4/3}
  .hero img{height:520px}.hero.sub img{height:340px}
  .btn{padding:14px 20px}
  .ccard{padding:24px}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.service .ph img,.pcard .ph img{transition:none}}
.sale .ph{position:relative}.sale .ph img{position:absolute;inset:0}
@media (max-width:640px){.hero img{object-position:62% 55%}}
/* donkerblauwe secties */
.navy .services{border-color:rgba(255,255,255,.16)}
.navy .service+.service{border-left-color:rgba(255,255,255,.16)}
.navy .service p{color:var(--on-navy-muted)}
.navy .btn.soft{background:transparent;color:#fff;border-color:rgba(255,255,255,.6)}
.navy .service:hover .btn.soft{background:#fff;color:var(--navy);border-color:#fff}
.navy .intro-c{color:#fff}
.navy .checks,.navy .checks li{border-color:rgba(255,255,255,.18)}
.navy .checks li::before{border-color:#fff}
@media (max-width:1080px){.navy .service,.navy .service+.service{border-bottom-color:rgba(255,255,255,.16)}}
/* minder waas over de foto's: verloop enkel onderaan, achter de tekst */
.hero::after{background:linear-gradient(180deg,rgba(16,27,51,0) 0%,rgba(16,27,51,0) 58%,rgba(16,27,51,.55) 100%)}
.hero h1,.hero .kicker{text-shadow:0 1px 18px rgba(16,27,51,.35)}
.mist{background:#f6f7f9}
/* realisaties v2 */
.rhead{display:flex;justify-content:space-between;align-items:flex-end;gap:24px;flex-wrap:wrap;margin-bottom:40px}
.rhead h2{margin-top:10px}
.feat{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);grid-template-rows:repeat(2,minmax(0,1fr));gap:20px;height:clamp(520px,52vw,680px)}
.fcard{position:relative;display:block;overflow:hidden;text-decoration:none;color:#fff;min-height:0}
.fcard.big{grid-row:span 2}
.fcard img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .6s}
.fcard:hover img{transform:scale(1.04)}
.fcard::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(16,27,51,0) 50%,rgba(16,27,51,.75) 100%)}
.cap2{position:absolute;left:0;right:0;bottom:0;z-index:1;padding:24px 26px;display:flex;flex-direction:column;gap:4px}
.cap2 .k{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#dfe5f0}
.cap2 .t{font-size:clamp(20px,1.8vw,26px);line-height:1.25}
.fcard.big .cap2 .t{font-size:clamp(24px,2.4vw,34px)}
.cap2 .more{font-size:13px;letter-spacing:.12em;text-transform:uppercase;margin-top:8px;opacity:.85}
.fcard:hover .more{opacity:1;text-decoration:underline;text-underline-offset:5px}
/* projectenpagina: gelijke raster */
.pgrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:40px 28px}
.pgrid .pcard .ph{aspect-ratio:4/3}
.pgrid .pcard .t{font-size:21px}
@media (max-width:1080px){.feat{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto;height:auto}.fcard{aspect-ratio:4/3}.fcard.big{grid-column:1/-1;grid-row:auto;aspect-ratio:16/10}.pgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.feat{grid-template-columns:minmax(0,1fr)}.fcard,.fcard.big{aspect-ratio:4/3}.pgrid{grid-template-columns:minmax(0,1fr)}}
@media (prefers-reduced-motion:reduce){.fcard img{transition:none}}
.fcard::after{background:linear-gradient(180deg,rgba(16,27,51,0) 72%,rgba(16,27,51,.55) 100%)}.cap2 .more{margin-top:0}
/* 5 projecten, label bij hover */
.feat5{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr);grid-template-rows:repeat(2,minmax(0,1fr));gap:16px;height:clamp(520px,50vw,660px)}
.hcard{position:relative;display:block;overflow:hidden;text-decoration:none;color:#fff;min-height:0}
.hcard.big{grid-row:span 2}
.hcard img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .7s}
.hov{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:rgba(24,39,68,.72);opacity:0;transition:opacity .35s}
.lbl{font-size:clamp(24px,2.4vw,34px);letter-spacing:.04em;transform:translateY(8px);transition:transform .35s}
.hcard.big .lbl{font-size:clamp(30px,3.2vw,46px)}
.hov .more{font-size:13px;letter-spacing:.14em;text-transform:uppercase;border-bottom:1px solid rgba(255,255,255,.7);padding-bottom:3px;transform:translateY(8px);transition:transform .35s}
.hcard:hover .hov,.hcard:focus-visible .hov{opacity:1}
.hcard:hover .lbl,.hcard:hover .more,.hcard:focus-visible .lbl,.hcard:focus-visible .more{transform:none}
.hcard:hover img{transform:scale(1.05)}
@media (hover:none){.hov{opacity:1;background:linear-gradient(180deg,rgba(24,39,68,0) 45%,rgba(24,39,68,.75) 100%);justify-content:flex-end;align-items:flex-start;padding:20px}.lbl,.hov .more{transform:none}.hcard.big .lbl,.lbl{font-size:24px}}
@media (max-width:1080px){.feat5{grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:auto;height:auto}.hcard{aspect-ratio:4/3}.hcard.big{grid-column:1/-1;grid-row:auto;aspect-ratio:16/10}}
@media (max-width:640px){.feat5{grid-template-columns:minmax(0,1fr)}.hcard,.hcard.big{aspect-ratio:4/3}}
@media (prefers-reduced-motion:reduce){.hcard img,.hov,.lbl,.hov .more{transition:none}}
.hov{background:rgba(24,39,68,.45)}@media (hover:none){.hov{background:linear-gradient(180deg,rgba(24,39,68,0) 70%,rgba(24,39,68,.6) 100%)}}
.hero img[src*="clt-hbk-ruwbouw-2"]{object-position:center 38%}
/* locatie bij hover, overzicht zonder tekst */
.hov .loc{display:inline-flex;align-items:center;gap:10px;font-size:clamp(24px,2.4vw,34px);letter-spacing:.02em;transform:translateY(8px);transition:transform .35s}
.hcard.big .hov .loc{font-size:clamp(30px,3.2vw,46px)}
.hov .loc svg{width:.8em;height:.8em;fill:none;stroke:currentColor;stroke-width:1.6}
.hcard:hover .loc,.hcard:focus-visible .loc{transform:none}
.pgrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.hcard.pc{aspect-ratio:4/5;max-width:100%}
@media (hover:none){.hov .loc{font-size:20px;transform:none}}
@media (max-width:1080px){.pgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:640px){.pgrid{grid-template-columns:minmax(0,1fr)}.hcard.pc{aspect-ratio:4/3}}
.pgrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;align-items:start}.hcard.pc{aspect-ratio:3/2;height:auto}@media (max-width:640px){.pgrid{grid-template-columns:minmax(0,1fr)}.hcard.pc{aspect-ratio:4/3}}
.pgrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.hcard.pc{aspect-ratio:4/5}@media (max-width:1080px){.pgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:640px){.pgrid{grid-template-columns:minmax(0,1fr)}.hcard.pc{aspect-ratio:4/3}}

/* galerij zonder grote eerste foto (gelijke rijen) */
.gallery.even figure:first-child{grid-column:auto}.gallery.even figure:first-child img{aspect-ratio:4/5;height:auto}

/* galerij met 1 of 2 foto's */
.gallery.one{grid-template-columns:minmax(0,1fr)}
.gallery.one figure:first-child img{aspect-ratio:auto;height:auto;max-height:80vh;width:100%;object-fit:contain;background:var(--mist)}
.gallery.two{grid-template-columns:repeat(2,minmax(0,1fr))}
.gallery.two figure:first-child{grid-column:auto}
.gallery.two figure:first-child img{aspect-ratio:4/5;height:auto}
@media (max-width:640px){.gallery.two{grid-template-columns:minmax(0,1fr)}}
/* menu beter leesbaar */
.nav{font-size:17px;gap:34px}
.nav a{font-weight:500;color:var(--navy)}

/* Aanpassingen 21/10 (Thibaud): leesbaar kader in de hero en foto van de zaakvoerder */
.hero .paneel{align-self:flex-start;display:flex;flex-direction:column;gap:20px;max-width:100%;
  padding:clamp(20px,3vw,36px) clamp(20px,3.2vw,40px);background:rgba(16,27,51,.58);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
@media (max-width:640px){.hero .paneel{align-self:stretch}.hero .paneel .kicker{font-size:12px;letter-spacing:.1em}}
.aanspreekpunt{display:flex;align-items:center;justify-content:center;gap:24px;margin:44px auto 0;text-align:left}
.aanspreekpunt .naam{font-size:24px;line-height:1.2}
.aanspreekpunt .rol{color:var(--on-navy-muted)}
.aanspreekpunt a{display:inline-block;margin-top:6px;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.5)}
.portret{width:120px;height:120px;border-radius:50%;object-fit:cover;flex:none}
.portret-leeg{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  border:1px dashed rgba(255,255,255,.55);background:rgba(255,255,255,.06);color:#fff}
.portret-leeg span{font-size:30px;letter-spacing:.06em}
.portret-leeg small{font-size:11px;letter-spacing:.12em;text-transform:uppercase;opacity:.8}
.ccard-portret .portret{width:96px;height:96px;margin-bottom:12px}
.ccard-portret .portret-leeg{border-color:var(--line);background:var(--mist);color:var(--navy)}

/* WebP-varianten en toegankelijkheid (21/10) */
picture{display:contents}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
