/* Re-site.nl voorbeelden. Systeem: "De werkbank" (zie re-site/DESIGN.md).
   Beige grond, wit zweeft, inkt draagt. Kleur alleen binnen de uitsnedes,
   in de kleurstalen en in dat ene woord. */

/* ============================================================
   1. TOKENS
   ============================================================ */
:root{
  --ground:#EAE2D5;
  --ground-2:#DED3C1;
  --ground-3:#F4EFE6;
  --panel:#FFFFFF;

  --ink:#16120D;
  --ink-2:#4C4338;
  --ink-3:#6B6053;

  --line:rgba(22,18,13,.13);
  --line-2:rgba(22,18,13,.24);
  --night:#16120D;
  --brass:#C9A163;

  --sh-panel:0 24px 60px -20px rgba(22,18,13,.34), 0 2px 8px rgba(22,18,13,.06);
  --sh-float:0 40px 90px -30px rgba(22,18,13,.40), 0 4px 14px rgba(22,18,13,.07);
  --sh-nav:0 10px 30px -14px rgba(22,18,13,.28);

  --r-pill:999px;
  --r-slab:22px;
  --r-panel:14px;
  --r-ctrl:8px;

  --gut:clamp(20px,4.5vw,56px);
  --sec:clamp(64px,6.6vw,104px);
  --wrap:1240px;

  --ease:cubic-bezier(.16,1,.3,1);

  --sans:"Archivo","Helvetica Neue",Helvetica,Arial,sans-serif;
  --mono:"Azeret Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}

/* ============================================================
   2. BASIS
   ============================================================ */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:110px}
body{
  margin:0;
  background:var(--ground);
  color:var(--ink);
  font-family:var(--sans);
  font-size:1.0625rem;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:4px}

.skip{
  position:absolute;left:-9999px;top:12px;z-index:200;
  background:var(--ink);color:var(--ground-3);
  padding:12px 20px;border-radius:var(--r-pill);text-decoration:none;
}
.skip:focus{left:12px}

.wrap{max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}
.sec{padding-block:var(--sec)}
.rule{height:1px;background:var(--line);border:0;margin:0 0 clamp(30px,3.4vw,52px);transform-origin:left}
.js .rule{transform:scaleX(0)}
.js .rule.is-in{transform:scaleX(1);transition:transform 1.1s var(--ease)}

/* ============================================================
   3. TYPOGRAFIE
   ============================================================ */
.d1{
  font-size:clamp(2.75rem,6.2vw,5.25rem);
  font-weight:800;font-variation-settings:"wdth" 104;
  line-height:.98;letter-spacing:-.04em;margin:0;text-wrap:balance;
}
.d1 .rise{display:block}
.d2{
  font-size:clamp(2rem,4vw,3.25rem);
  font-weight:800;font-variation-settings:"wdth" 102;
  line-height:1.04;letter-spacing:-.032em;margin:0;max-width:18ch;text-wrap:balance;
}
.d3{font-size:clamp(1.375rem,1.8vw,1.75rem);font-weight:700;line-height:1.15;letter-spacing:-.022em;margin:0}
.lede{
  font-size:clamp(1.0625rem,.5vw + .95rem,1.25rem);
  line-height:1.6;letter-spacing:-.011em;color:var(--ink-2);margin:0;max-width:52ch;
}
.brass{font-style:normal;color:#876430}
.data{
  font-family:var(--mono);font-size:.6875rem;font-weight:500;
  letter-spacing:.09em;text-transform:uppercase;color:var(--ink-3);
}

.chip{
  display:inline-flex;align-items:center;gap:9px;
  background:var(--panel);border-radius:var(--r-pill);
  padding:8px 16px 8px 13px;
  box-shadow:0 6px 18px -10px rgba(22,18,13,.32);
  font-family:var(--mono);font-size:.6875rem;font-weight:500;letter-spacing:.09em;
  text-transform:uppercase;color:var(--ink-2);white-space:nowrap;
}
.chip svg{width:13px;height:13px;flex:none;color:var(--ink)}

/* ============================================================
   4. KNOPPEN EN LINKS
   ============================================================ */
.btn{
  position:relative;overflow:hidden;isolation:isolate;
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  background:var(--ink);color:var(--ground-3);border:1px solid var(--ink);
  border-radius:var(--r-pill);padding:17px 30px;
  font-weight:600;font-size:1rem;letter-spacing:-.005em;text-decoration:none;cursor:pointer;
  transition:transform .5s var(--ease),box-shadow .5s var(--ease);
  box-shadow:0 10px 22px -14px rgba(22,18,13,.7);
}
.btn::before{
  content:"";position:absolute;inset:0;z-index:-1;background:var(--ground-3);
  transform:translateY(101%);transition:transform .55s var(--ease);
}
.btn span{position:relative;transition:color .35s var(--ease)}
.btn:hover{transform:translateY(-1px)}
.btn:hover::before{transform:translateY(0)}
.btn:hover span{color:var(--ink)}
.btn--onnight{background:var(--ground-3);color:var(--ink);border-color:var(--ground-3)}
.btn--onnight::before{background:var(--ground-2)}
.btn--ink{background:var(--ink);color:var(--ground-3);border:1px solid rgba(244,239,230,.4);box-shadow:0 12px 26px -16px rgba(0,0,0,.9)}

.tlink{
  display:inline-flex;align-items:center;gap:7px;
  font-weight:600;font-size:.9375rem;text-decoration:none;color:var(--ink);
  padding-bottom:2px;position:relative;
}
.tlink::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:currentColor;
  transform:scaleX(0);transform-origin:right;transition:transform .45s var(--ease);
}
.tlink:hover::after{transform:scaleX(1);transform-origin:left}
.ar{width:14px;height:14px;flex:none;transition:transform .45s var(--ease)}
.tlink:hover .ar{transform:translateX(3px)}

/* ============================================================
   5. NAVIGATIE
   ============================================================ */
.nav{position:fixed;top:0;left:0;right:0;z-index:100;padding:calc(16px + env(safe-area-inset-top,0px)) var(--gut) 16px}
.nav__in{
  max-width:calc(var(--wrap) - 2 * var(--gut));margin-inline:auto;
  background:var(--panel);border-radius:var(--r-pill);box-shadow:var(--sh-nav);
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px;
  padding:9px 9px 9px 24px;
  transition:transform .5s var(--ease),box-shadow .5s var(--ease);
}
.nav.is-stuck .nav__in{transform:translateY(-6px);box-shadow:0 16px 40px -18px rgba(22,18,13,.4)}
.mark{display:inline-flex;align-items:center;text-decoration:none;color:inherit}
.mark svg{height:38px;width:auto;display:block}
.mark--lg svg{height:46px}
.mark .m-ring{fill:none;stroke:currentColor}
.mark .m-arrow{fill:currentColor;stroke:none}
.mark .m-word{font-family:"Bricolage Grotesque","Archivo",sans-serif;font-weight:800;font-size:30px;fill:currentColor}
.mark .m-tld{opacity:.45}
.nav__links{display:flex;gap:28px;justify-content:center}
.nav__links a{text-decoration:none;font-size:.9375rem;font-weight:500;color:var(--ink-2);transition:color .3s var(--ease);white-space:nowrap}
.nav__links a:hover,.nav__links a[aria-current]{color:var(--ink)}
.nav__links a[aria-current]{text-decoration:underline;text-underline-offset:6px;text-decoration-thickness:1px}
.nav__cta{
  display:inline-flex;align-items:center;background:var(--ink);color:var(--ground-3);
  border-radius:var(--r-pill);padding:12px 22px;font-size:.9375rem;font-weight:600;
  text-decoration:none;white-space:nowrap;transition:transform .4s var(--ease);
}
.nav__cta:hover{transform:translateY(-1px)}

/* Hamburger: alleen onder 900px, waar de middenlinks wegvallen (als op de homepage) */
.burger{
  display:none;width:46px;height:46px;flex:none;
  border:1px solid var(--line-2);border-radius:50%;
  background:var(--panel);cursor:pointer;padding:0;
  align-items:center;justify-content:center;
}
.burger span{position:relative;display:block;width:17px;height:1.6px;background:var(--ink);border-radius:2px}
.burger span::before,.burger span::after{
  content:"";position:absolute;left:0;width:17px;height:1.6px;background:var(--ink);border-radius:2px;
  transition:transform .4s var(--ease),opacity .25s ease;
}
.burger span::before{top:-5.5px}
.burger span::after{top:5.5px}
.burger[aria-expanded="true"] span{background:transparent}
.burger[aria-expanded="true"] span::before{transform:translateY(5.5px) rotate(45deg)}
.burger[aria-expanded="true"] span::after{transform:translateY(-5.5px) rotate(-45deg)}

.menu{
  position:absolute;left:var(--gut);right:var(--gut);top:calc(100% + 8px);
  background:var(--panel);border-radius:26px;
  box-shadow:0 26px 60px -26px rgba(22,18,13,.55);
  padding:10px;
  display:none;flex-direction:column;
  opacity:0;transform:translateY(-8px);
  transition:opacity .32s var(--ease),transform .38s var(--ease);
}
.menu.is-open{display:flex}
.menu.is-shown{opacity:1;transform:none}
.menu a{
  display:block;padding:15px 18px;border-radius:18px;
  text-decoration:none;font-size:1.0625rem;font-weight:600;letter-spacing:-.015em;color:var(--ink);
}
.menu a+a{border-top:1px solid var(--line)}
.menu a:active{background:var(--ground-3)}

/* ============================================================
   6. HERO: de werkbank
   ============================================================ */
.hero{padding-top:clamp(128px,13vw,176px);padding-bottom:clamp(40px,5vw,72px)}
.hero__in{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:clamp(32px,5vw,72px);align-items:center}
.hero .d1{margin-top:clamp(22px,2.6vw,30px);max-width:none;font-size:clamp(2.375rem,4.6vw,4.125rem)}
.hero .lede{margin-top:clamp(20px,2.2vw,28px)}

.facts{list-style:none;margin:clamp(28px,3.2vw,40px) 0 0;padding:0;display:flex;flex-wrap:wrap;gap:12px}
.facts li{
  background:var(--panel);border-radius:var(--r-panel);box-shadow:0 10px 26px -16px rgba(22,18,13,.4);
  padding:14px 20px 12px;min-width:118px;display:flex;flex-direction:column;gap:2px;
}
.facts strong{font-size:1.25rem;font-weight:800;letter-spacing:-.03em;line-height:1;font-variation-settings:"wdth" 104}

.bench{position:relative;padding:28px 0 40px}
.bench__slab{
  position:relative;background:var(--ground-2);border-radius:var(--r-slab);
  padding:clamp(22px,3vw,40px) clamp(22px,3vw,40px) clamp(64px,7vw,96px);
}
.frame{
  display:block;background:var(--panel);border-radius:var(--r-panel);overflow:hidden;
  box-shadow:var(--sh-panel);
}
.frame__bar{display:flex;align-items:center;gap:6px;height:34px;padding:0 14px;border-bottom:1px solid var(--line)}
.frame__bar i{width:9px;height:9px;border-radius:50%;background:var(--ground-2)}
.frame__url{
  margin-left:10px;flex:1;min-width:0;max-width:260px;
  background:var(--ground-3);border-radius:var(--r-pill);padding:3px 12px;
  font-family:var(--mono);font-size:.625rem;font-weight:500;letter-spacing:.06em;color:var(--ink-3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.frame img{width:100%;aspect-ratio:16/10;object-fit:cover;object-position:top}

.phone{
  position:absolute;display:block;background:var(--ink);border-radius:20px;padding:5px;
  box-shadow:var(--sh-float);
}
.phone img{border-radius:15px;width:100%;aspect-ratio:9/19.5;object-fit:cover;object-position:top}
.phone--hero{width:25%;right:-14px;bottom:-26px}

/* selectiekader: inkt met witte grepen, zoals in de editor */
.sel{position:absolute;inset:-7px;border:1.5px solid var(--ink);border-radius:24px;pointer-events:none}
.sel b{position:absolute;width:9px;height:9px;background:var(--panel);border:1.5px solid var(--ink);border-radius:2px}
.sel b:nth-child(1){left:-5px;top:-5px}
.sel b:nth-child(2){right:-5px;top:-5px}
.sel b:nth-child(3){left:-5px;bottom:-5px}
.sel b:nth-child(4){right:-5px;bottom:-5px}
.sel__tag{
  position:absolute;left:-1.5px;top:-30px;white-space:nowrap;
  background:var(--ink);color:var(--ground-3);border-radius:6px;padding:4px 9px;
  font-family:var(--mono);font-size:.625rem;font-weight:500;letter-spacing:.06em;
}

.tool{position:absolute;background:var(--panel);border-radius:var(--r-panel);box-shadow:var(--sh-panel);padding:12px 14px}
.tool__h{margin:0 0 8px;font-size:.75rem;font-weight:700;letter-spacing:-.005em}
.tool--bp{left:-22px;top:0;width:164px}
.tool--bp ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.tool--bp li{display:flex;justify-content:space-between;align-items:center;font-size:.8125rem;padding:5px 8px;border-radius:6px;color:var(--ink-2)}
.tool--bp li.is-on{background:var(--ground-3);color:var(--ink);font-weight:600}
.tool--bp .data{font-size:.625rem}
.tool--col{left:9%;bottom:0}
.tool__sw{display:flex;gap:6px}
.tool__sw i{width:22px;height:22px;border-radius:6px;box-shadow:inset 0 0 0 1px rgba(22,18,13,.12)}

/* ============================================================
   7. VOORBEELDEN
   ============================================================ */
.sec--sites{padding-top:clamp(40px,4.4vw,68px)}
.sites__head{display:flex;flex-direction:column;gap:clamp(22px,2.6vw,32px);margin-bottom:clamp(36px,4vw,56px)}
.filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.filters__ic{display:inline-grid;place-items:center;width:38px;height:38px;color:var(--ink-3)}
.filters__ic svg{width:17px;height:17px}
.pill{
  display:inline-flex;align-items:center;gap:8px;cursor:pointer;
  background:var(--panel);border:0;border-radius:var(--r-pill);padding:10px 16px;
  font-size:.9375rem;font-weight:500;color:var(--ink-2);
  box-shadow:0 6px 18px -12px rgba(22,18,13,.4);
  transition:background .3s var(--ease),color .3s var(--ease),transform .4s var(--ease);
}
.pill span{font-family:var(--mono);font-size:.6875rem;color:var(--ink-3);transition:color .3s var(--ease)}
.pill:hover{transform:translateY(-1px);color:var(--ink)}
.pill.is-on{background:var(--ink);color:var(--ground-3)}
.pill.is-on span{color:rgba(244,239,230,.6)}

.filterset{display:flex;flex-direction:column;gap:12px}
.filters__lbl{min-width:76px;color:var(--ink-3)}
.pill svg{width:15px;height:15px;flex:none;margin-left:-2px}

.grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(48px,5vw,72px) clamp(28px,3.4vw,48px)}
.card[hidden]{display:none}

.card__shot{
  position:relative;display:block;text-decoration:none;
  background:var(--ground-2);border-radius:var(--r-slab);
  padding:clamp(18px,2.4vw,30px) clamp(18px,2.4vw,30px) clamp(40px,4.6vw,58px);
}
.card__shot .frame{transition:transform .7s var(--ease),box-shadow .7s var(--ease)}
.card__shot .phone{width:22%;right:clamp(10px,1.6vw,22px);bottom:clamp(-22px,-1.6vw,-14px);transition:transform .7s var(--ease)}
.card__shot .sel{inset:8px;border-radius:26px;opacity:0;transform:scale(1.01);transition:opacity .35s var(--ease),transform .5s var(--ease)}
.card__shot:hover .frame,.card__shot:focus-visible .frame{transform:translateY(-6px);box-shadow:var(--sh-float)}
.card__shot:hover .phone,.card__shot:focus-visible .phone{transform:translateY(-12px)}
.card__shot:hover .sel,.card__shot:focus-visible .sel{opacity:1;transform:none}
.card__shot:focus-visible{outline:none}
.card__shot .sel__tag{top:-13px;left:22px}

/* soort site: label op de werkbank, linksonder naast het browserkader */
.kind{
  position:absolute;left:clamp(18px,2.4vw,30px);bottom:clamp(9px,1.1vw,15px);
  display:inline-flex;align-items:center;gap:7px;
  background:var(--panel);border-radius:var(--r-pill);padding:6px 12px 6px 9px;
  box-shadow:0 6px 18px -10px rgba(22,18,13,.4);
  font-family:var(--mono);font-size:.625rem;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2);
}
.kind svg{width:13px;height:13px;color:var(--ink)}
.kind--onepager{background:var(--ink);color:var(--ground-3)}
.kind--onepager svg{color:var(--ground-3)}

.empty{margin:0;color:var(--ink-2)}
.empty .tlink{background:none;border:0;padding:0 0 2px;cursor:pointer;font:inherit;font-weight:600}

.card__meta{padding:clamp(30px,3vw,38px) 4px 0}
.card__head{display:flex;align-items:baseline;justify-content:space-between;gap:16px}
.swatch{
  display:inline-flex;align-items:center;gap:7px;flex:none;
  font-family:var(--mono);font-size:.625rem;font-weight:500;letter-spacing:.06em;color:var(--ink-3);
}
.swatch i{width:14px;height:14px;border-radius:4px;box-shadow:inset 0 0 0 1px rgba(22,18,13,.14)}
.card__meta .data{margin:8px 0 0}
.card__desc{margin:12px 0 0;color:var(--ink-2);max-width:52ch}
.card__links{display:flex;flex-wrap:wrap;align-items:center;gap:10px 24px;margin-top:16px}
.card__live{
  display:inline-flex;align-items:center;gap:6px;text-decoration:none;
  font-family:var(--mono);font-size:.6875rem;font-weight:500;letter-spacing:.06em;color:var(--ink-3);
  background:var(--panel);border-radius:var(--r-pill);padding:6px 12px;
  box-shadow:0 6px 18px -12px rgba(22,18,13,.4);
}
.card__live:hover{color:var(--ink)}
.card__live .ar{width:12px;height:12px}

.note{margin:clamp(56px,6vw,88px) 0 0;max-width:70ch;font-size:.9375rem;color:var(--ink-3)}

/* ============================================================
   8. SLOT EN VOET
   ============================================================ */
.close{background:var(--night);color:var(--ground-3);padding-block:clamp(90px,10vw,150px);text-align:center}
.close__in{display:flex;flex-direction:column;align-items:center}
.close__h{margin-top:clamp(24px,3vw,34px);max-width:21ch}
.close .lede{color:rgba(244,239,230,.72);max-width:46ch;margin-top:24px}
.close .chip{background:rgba(244,239,230,.1);color:rgba(244,239,230,.8);box-shadow:none}
.close .chip svg{color:var(--ground-3)}
.close__a{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-top:clamp(30px,3.4vw,44px)}

.foot{background:var(--night);color:rgba(244,239,230,.62);padding-block:0 clamp(40px,5vw,64px);font-size:.875rem}
.foot__top{display:flex;align-items:center;flex-wrap:wrap;gap:28px;padding-top:clamp(36px,4vw,52px);border-top:1px solid rgba(244,239,230,.12)}
.foot .mark{color:var(--ground-3)}
.foot__links{display:flex;flex-wrap:wrap;gap:14px 26px;margin-left:auto}
.foot__links a{text-decoration:none;transition:color .3s var(--ease)}
.foot__links a:hover{color:var(--ground-3)}
.foot__fine{margin:clamp(26px,3vw,36px) 0 0;font-size:.8125rem;line-height:1.6;color:rgba(244,239,230,.45)}
.foot__fine a{color:rgba(244,239,230,.72);text-decoration:underline;text-underline-offset:3px}

/* ============================================================
   9. BEWEGING: één keer opkomen en scherpstellen
   ============================================================ */
.js .fade{opacity:0;transform:translateY(16px)}
.js .fade.is-in{opacity:1;transform:none;transition:opacity .9s var(--ease) var(--d,0ms),transform .9s var(--ease) var(--d,0ms)}
.js .rise>span{display:inline-block;transform:translateY(105%);opacity:0}
.js .rise{overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em}
.js .rise.is-in>span{transform:none;opacity:1;transition:transform 1s var(--ease) var(--d,0ms),opacity .6s var(--ease) var(--d,0ms)}
.js .sharpen{opacity:0;filter:blur(10px);transform:scale(.98)}
.js .sharpen.is-in{opacity:1;filter:none;transform:none;transition:opacity 1.2s var(--ease) .15s,filter 1.2s var(--ease) .15s,transform 1.4s var(--ease) .15s}

@media (prefers-reduced-motion:reduce){
  .js .fade,.js .rise>span,.js .sharpen,.js .rule{opacity:1!important;transform:none!important;filter:none!important;transition:none!important}
  .card__shot .frame,.card__shot .phone,.card__shot .sel{transition:none}
}

/* ============================================================
   10. BREEKPUNTEN
   ============================================================ */
@media (max-width:1060px){
  .hero__in{grid-template-columns:1fr}
  .hero .d1{max-width:14ch}
  .bench{max-width:720px;margin-top:8px}
  .tool--bp{left:auto;right:-8px;top:-6px}
}
@media (max-width:900px){
  .nav__links{display:none}
  .nav__in{grid-template-columns:auto auto;justify-content:space-between}
  .burger{display:flex}
  /* zoals op de homepage: op telefoon alleen merk en menu; de demoknop staat in het menu */
  .nav__cta{display:none}
  .grid{grid-template-columns:1fr}
}
@media (max-width:560px){
  .nav__in{padding:7px 7px 7px 18px}
  .mark svg{height:32px}
  .facts li{min-width:0;flex:1 1 30%;padding:12px 14px 10px}
  .facts strong{font-size:1.0625rem}
  .tool--bp{display:none}
  .tool--col{left:12px}
  .phone--hero{right:-6px}
  .frame__bar{height:28px;padding:0 10px}
  .frame__url{max-width:none}
  .card__head{flex-direction:column;gap:6px}
  .filters__ic{display:none}
  .filters__lbl{width:100%;min-width:0}
  .pill{padding:9px 13px;font-size:.875rem}
  .foot__links{margin-left:0}
}
