/* ═══════════════════════════════════════════════════════════════════
   NAVIGATIE — transparant over de hero, crème zodra er gescrold wordt
   ═══════════════════════════════════════════════════════════════════ */

.nav {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: var(--z-nav);
  background: transparent;
  border-bottom: 1px solid transparent;
  transition:
    background-color var(--dur-base) var(--ease),
    border-color var(--dur-base) var(--ease),
    backdrop-filter var(--dur-base) var(--ease);
}

.nav__inner {
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--gutter);
  height: 82px;
  display: flex;
  align-items: center;
  gap: clamp(24px, 3vw, 52px);
  transition: height var(--dur-base) var(--ease);
}

/* ── Logo ────────────────────────────────────────────────────────── */

.nav__logo {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  line-height: 1;
}
.nav__logo-name {
  font-family: var(--font-display);
  font-style: italic;
  font-size: 1.5rem;
  font-weight: 400;
  letter-spacing: 0.005em;
  color: var(--c-text-inv);
  transition: color var(--dur-base) var(--ease);
}
.nav__logo-sub {
  font-size: 0.5625rem;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  color: var(--c-brass-bright);
  margin-top: 5px;
  transition: color var(--dur-base) var(--ease);
}

/* ── Menu ────────────────────────────────────────────────────────── */

.nav__menu {
  display: none;
  align-items: center;
  gap: clamp(20px, 2.4vw, 38px);
  margin-left: auto;
}

.nav__link {
  position: relative;
  font-size: var(--t-sm);
  font-weight: 400;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: rgba(247, 243, 234, 0.78);
  padding-block: 6px;
  /* Zonder dit breekt "Chef aan huis" binnen de knop over twee regels
     zodra de balk krap wordt, en verspringt de hele navigatie. */
  white-space: nowrap;
  transition: color var(--dur-fast) var(--ease);
}
.nav__link::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--dur-base) var(--ease-out);
}
.nav__link:hover { color: var(--c-text-inv); }
.nav__link:hover::after,
.nav__link[aria-current="page"]::after { transform: scaleX(1); }
.nav__link[aria-current="page"] { color: var(--c-text-inv); }

/* ── Uitklapmenu Concepten ───────────────────────────────────────── */

.nav__item { position: relative; }

.nav__toggle {
  display: inline-flex;
  align-items: center;
  gap: 7px;
}
.nav__toggle-chevron {
  transition: transform var(--dur-base) var(--ease);
  opacity: 0.75;
}
.nav__item[data-open="true"] .nav__toggle-chevron { transform: rotate(180deg); }

/* Het paneel doet meer dan namen opsommen: per regel staat wat het is, voor
   hoeveel mensen en wat het kost. Zo weet je al in de balk wat er mogelijk is. */
.nav__panel {
  position: absolute;
  top: calc(100% + 18px);
  left: 0;
  min-width: 360px;
  padding: var(--s-4) 0 var(--s-3);
  background: var(--c-cream);
  border: 1px solid var(--c-cream-line);
  box-shadow: var(--shadow-lg);
  opacity: 0;
  visibility: hidden;
  transform: translateY(-8px);
  transition:
    opacity var(--dur-base) var(--ease),
    transform var(--dur-base) var(--ease-out),
    visibility var(--dur-base);
}
.nav__item[data-open="true"] .nav__panel {
  opacity: 1;
  visibility: visible;
  transform: none;
}

/* Panelen aan de rechterkant van de balk klappen naar links uit, anders
   lopen ze buiten beeld. */
.nav__item--right .nav__panel { left: auto; right: 0; }

.nav__panel-label {
  display: block;
  padding: var(--s-2) var(--s-5) var(--s-3);
  font-size: var(--t-overline);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--c-brass-ink);
}

.nav__panel-sep {
  height: 1px;
  background: var(--c-cream-line);
  margin: var(--s-3) var(--s-5);
  border: 0;
}

.nav__panel-link {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 2px var(--s-4);
  padding: 10px var(--s-5);
  color: var(--c-text);
  border-left: 2px solid transparent;
  transition:
    background-color var(--dur-fast) var(--ease),
    border-color var(--dur-fast) var(--ease);
}
.nav__panel-link:hover {
  background: var(--c-cream-soft);
  border-left-color: var(--c-brass);
}

.nav__panel-name {
  font-family: var(--font-display);
  font-size: 1.25rem;
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -0.015em;
}
.nav__panel-meta {
  font-size: var(--t-xs);
  letter-spacing: 0.03em;
  color: var(--c-brass-ink);
  white-space: nowrap;
  text-align: right;
  align-self: center;
}
/* Eén regel die zegt waar het concept voor is */
.nav__panel-desc {
  grid-column: 1 / -1;
  font-size: var(--t-xs);
  line-height: 1.45;
  color: var(--c-text-mute);
}

/* ── Acties rechts ───────────────────────────────────────────────── */

.nav__actions {
  display: none;
  align-items: center;
  gap: var(--s-5);
  flex-shrink: 0;
}

.nav__phone {
  font-size: var(--t-sm);
  letter-spacing: 0.06em;
  color: rgba(247, 243, 234, 0.72);
  transition: color var(--dur-fast) var(--ease);
  white-space: nowrap;
}
.nav__phone:hover { color: var(--c-text-inv); }

.nav__cta {
  padding: 12px 24px;
  font-size: var(--t-xs);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--c-text-inv);
  border: 1px solid rgba(247, 243, 234, 0.35);
  border-radius: var(--r-sm);
  white-space: nowrap;
  transition:
    background-color var(--dur-fast) var(--ease),
    border-color var(--dur-fast) var(--ease),
    color var(--dur-fast) var(--ease);
}
.nav__cta:hover {
  background: var(--c-brass);
  border-color: var(--c-brass);
  color: var(--c-ink);
}

/* ── Gescrolde staat: crème balk, donkere tekst ──────────────────── */

/* Net boven het omslagpunt (1180–1279px) is de balk krap: de knop
   "Offerte aanvragen" liep bij 1180px 24px over de rand. Iets minder
   lucht tussen de onderdelen lost dat op, zonder dat iets ombreekt. */
@media (min-width: 1180px) and (max-width: 1279px) {
  .nav__inner { gap: 24px; }
  .nav__menu { gap: 18px; }
  .nav__cta { padding-inline: 18px; }
}

.nav--scrolled {
  background: rgba(247, 243, 234, 0.94);
  backdrop-filter: blur(18px) saturate(140%);
  -webkit-backdrop-filter: blur(18px) saturate(140%);
  border-bottom-color: var(--c-cream-line);
}
.nav--scrolled .nav__inner { height: 70px; }
.nav--scrolled .nav__logo-name { color: var(--c-text); }
.nav--scrolled .nav__logo-sub { color: var(--c-brass-ink); }
.nav--scrolled .nav__link,
.nav--scrolled .nav__phone { color: var(--c-text-soft); }
.nav--scrolled .nav__link:hover,
.nav--scrolled .nav__link[aria-current="page"],
.nav--scrolled .nav__phone:hover { color: var(--c-text); }
.nav--scrolled .nav__cta {
  background: var(--c-ink);
  border-color: var(--c-ink);
  color: var(--c-text-inv);
}
.nav--scrolled .nav__cta:hover {
  background: var(--c-brass);
  border-color: var(--c-brass);
  color: var(--c-ink);
}

/* Pagina's zonder donkere hero starten meteen in de crème staat.
   LET OP: elke pagina met een lichte hero (.hero--plain) MOET
   <header class="nav nav--solid"> gebruiken. Zonder deze klasse staat er
   witte navigatietekst op een crème achtergrond en is het menu onzichtbaar
   totdat de bezoeker scrolt. */
.nav--solid {
  background: var(--c-cream);
  border-bottom-color: var(--c-cream-line);
}
.nav--solid .nav__logo-name { color: var(--c-text); }
.nav--solid .nav__logo-sub { color: var(--c-brass-ink); }
.nav--solid .nav__link,
.nav--solid .nav__phone { color: var(--c-text-soft); }
.nav--solid .nav__link:hover,
.nav--solid .nav__link[aria-current="page"],
.nav--solid .nav__phone:hover { color: var(--c-text); }
.nav--solid .nav__cta {
  background: var(--c-ink);
  border-color: var(--c-ink);
  color: var(--c-text-inv);
}

/* ── Hamburger ───────────────────────────────────────────────────── */

.nav__burger {
  margin-left: auto;
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  gap: 6px;
  align-content: center;
  flex-shrink: 0;
}
.nav__burger span {
  display: block;
  width: 24px;
  height: 1px;
  background: var(--c-text-inv);
  transition:
    transform var(--dur-base) var(--ease),
    opacity var(--dur-fast) var(--ease),
    background-color var(--dur-base) var(--ease);
}
.nav--scrolled .nav__burger span,
.nav--solid .nav__burger span { background: var(--c-text); }

body[data-menu="open"] .nav__burger span { background: var(--c-text); }
body[data-menu="open"] .nav__burger span:nth-child(1) { transform: translateY(3.5px) rotate(45deg); }
body[data-menu="open"] .nav__burger span:nth-child(2) { transform: translateY(-3.5px) rotate(-45deg); }

/* Het open menu is crème, dus de balk moet mee omkleuren — anders valt het
   witte logo weg tegen de achtergrond. */
body[data-menu="open"] .nav__logo-name { color: var(--c-text); }
body[data-menu="open"] .nav__logo-sub { color: var(--c-brass-ink); }

/* ── Mobiel menu ─────────────────────────────────────────────────── */

.mobile-menu {
  position: fixed;
  inset: 0;
  z-index: calc(var(--z-nav) - 1);
  background: var(--c-cream);
  padding: 110px var(--gutter) var(--s-8);
  overflow-y: auto;
  opacity: 0;
  visibility: hidden;
  transition:
    opacity var(--dur-base) var(--ease),
    visibility var(--dur-base);
}
body[data-menu="open"] .mobile-menu { opacity: 1; visibility: visible; }
body[data-menu="open"] { overflow: hidden; }

.mobile-menu__group + .mobile-menu__group { margin-top: var(--s-7); }

.mobile-menu__label {
  display: block;
  font-size: var(--t-overline);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--c-brass-ink);
  margin-bottom: var(--s-4);
}

.mobile-menu__link {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--s-4);
  padding: 13px 0;
  border-bottom: 1px solid var(--c-cream-line);
  font-family: var(--font-display);
  font-size: 1.5rem;
  letter-spacing: -0.015em;
}
.mobile-menu__link span {
  font-family: var(--font-body);
  font-size: var(--t-xs);
  letter-spacing: 0.04em;
  color: var(--c-text-mute);
}

.mobile-menu__footer {
  margin-top: var(--s-8);
  display: flex;
  flex-direction: column;
  gap: var(--s-4);
}
.mobile-menu__footer .btn { width: 100%; }
.mobile-menu__contact {
  font-size: var(--t-sm);
  color: var(--c-text-soft);
  text-align: center;
}

/* ── Breedbeeld: menu tonen, hamburger verbergen ─────────────────── */

/* 1180 in plaats van 1060: met vier categorieën plus Over ons en Contact
   heeft de balk meer breedte nodig voordat alles er comfortabel in past. */
@media (min-width: 1180px) {
  .nav__menu,
  .nav__actions { display: flex; }
  .nav__burger { display: none; }
  .mobile-menu { display: none; }
}
