nav {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--nav-padding, 18px 48px);
  background: var(--nav-bg, rgba(26,22,18,0.72));
  backdrop-filter: blur(10px);
  transition: background .3s ease;
}

.nav-logo {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  flex-shrink: 0;
}

.nav-logo img {
  display: block;
  width: var(--nav-logo-width, clamp(180px, 18vw, 250px));
  height: auto;
  max-height: var(--nav-logo-max-height, 58px);
  object-fit: contain;
  object-position: left center;
}

.nav-links {
  display: flex;
  gap: var(--nav-links-gap, 32px);
  list-style: none;
  align-items: center;
}

.nav-links > li {
  position: relative;
}

.nav-links a,
.nav-links .nav-dropdown-label {
  color: var(--nav-link-color, rgba(255,255,255,.82));
  font-size: .75rem;
  letter-spacing: var(--nav-link-spacing, .16em);
  text-transform: uppercase;
  text-decoration: none;
  transition: color .2s ease, border-color .2s ease;
}

.nav-links a:hover,
.nav-links a.active,
.nav-links .nav-dropdown-label.active {
  color: var(--nav-link-hover, #fff);
}

.nav-links a.active,
.nav-links .nav-dropdown-label.active {
  border-bottom: var(--nav-active-border, 0);
  padding-bottom: var(--nav-active-padding, 0);
}

.has-dropdown > a,
.has-dropdown > .nav-dropdown-label {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: default;
}

.has-dropdown > a::after,
.has-dropdown > .nav-dropdown-label::after {
  content: '';
  width: 6px;
  height: 6px;
  border-right: 1px solid currentColor;
  border-bottom: 1px solid currentColor;
  transform: rotate(45deg) translateY(-2px);
  opacity: .72;
  transition: transform .2s ease;
}

.has-dropdown:hover > a::after,
.has-dropdown:focus-within > a::after,
.has-dropdown:hover > .nav-dropdown-label::after,
.has-dropdown:focus-within > .nav-dropdown-label::after {
  transform: rotate(225deg) translateY(-1px);
}

.nav-dropdown {
  position: absolute;
  top: calc(100% + 18px);
  left: 50%;
  min-width: 230px;
  padding: 14px 0;
  list-style: none;
  background: rgba(26,22,18,.96);
  border: 1px solid rgba(255,255,255,.12);
  box-shadow: 0 22px 50px rgba(0,0,0,.22);
  transform: translate(-50%, 8px);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .2s ease, transform .2s ease, visibility .2s ease;
}

.nav-dropdown::before {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  top: -18px;
  height: 18px;
}

.has-dropdown:hover .nav-dropdown,
.has-dropdown:focus-within .nav-dropdown {
  transform: translate(-50%, 0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.nav-dropdown a {
  display: block;
  padding: 11px 20px;
  color: rgba(255,255,255,.72);
  white-space: nowrap;
}

.nav-dropdown a:hover,
.nav-dropdown a:focus {
  color: #fff;
  background: rgba(255,255,255,.06);
}

.nav-cta {
  background: transparent;
  border: 1px solid var(--nav-cta-border, rgba(255,255,255,.55));
  color: var(--nav-cta-color, #fff);
  padding: var(--nav-cta-padding, 9px 22px);
  font-family: var(--font-body);
  font-size: .72rem;
  letter-spacing: var(--nav-cta-spacing, .16em);
  text-transform: uppercase;
  text-decoration: none;
  transition: all .25s ease;
}

.nav-cta:hover {
  background: var(--nav-cta-hover-bg, #fff);
  color: var(--nav-cta-hover-color, var(--dark-brown));
}

.nav-toggle {
  display: none;
  width: 46px;
  height: 46px;
  border: 1px solid rgba(255,255,255,.42);
  background: rgba(26,22,18,.2);
  color: #fff;
  cursor: pointer;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 5px;
  padding: 0;
}

.nav-toggle span {
  width: 20px;
  height: 1px;
  background: currentColor;
  transition: transform .2s ease, opacity .2s ease;
}

.mobile-menu {
  display: none;
}

body.menu-open {
  overflow: hidden;
}

.home-products {
  background: var(--cream);
  position: relative;
  overflow: hidden;
  padding: 96px 0;
}

.home-products::before {
  content: '';
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: 58%;
  background: url("../images/tangible-background.jpg") center center/cover no-repeat;
  mask-image: linear-gradient(to left, rgba(0,0,0,1) 58%, rgba(0,0,0,.86) 72%, rgba(0,0,0,.52) 88%, transparent 100%);
  -webkit-mask-image: linear-gradient(to left, rgba(0,0,0,1) 58%, rgba(0,0,0,.86) 72%, rgba(0,0,0,.52) 88%, transparent 100%);
  pointer-events: none;
}

.home-products::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(90deg, rgba(245,240,234,.97) 0%, rgba(245,240,234,.9) 34%, rgba(245,240,234,.64) 56%, rgba(245,240,234,.28) 76%, rgba(245,240,234,.2) 100%);
  pointer-events: none;
}

.home-products .container {
  position: relative;
  z-index: 1;
}

.home-products-inner {
  display: grid;
  grid-template-columns: minmax(0, 980px);
  justify-content: start;
  gap: 42px;
  align-items: center;
  min-height: 640px;
}

.home-products-intro {
  max-width: 760px;
}

.home-products-intro .section-label {
  text-align: left;
  margin-bottom: 16px;
  color: var(--accent);
  font-size: .65rem;
  letter-spacing: .24em;
  text-transform: uppercase;
}

.home-products-intro h2 {
  font-family: var(--font-display);
  font-size: clamp(2rem, 4vw, 3.4rem);
  font-weight: 400;
  line-height: 1.08;
  margin-bottom: 20px;
  color: var(--dark-brown);
}

.home-products-intro p {
  font-size: 1.04rem;
  line-height: 1.9;
  color: var(--olive);
}

.home-products-intro p + p {
  margin-top: 14px;
}

.home-product-ribbon {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 2px;
  width: min(100%, 1080px);
  background: rgba(92,74,61,.14);
}

.home-product-card {
  background: rgba(255,255,255,.7);
  backdrop-filter: blur(5px);
  border: 1px solid rgba(92,74,61,.1);
  padding: 30px 28px 32px;
}

.home-product-card h3 {
  font-family: var(--font-display);
  font-size: clamp(1.45rem, 2vw, 1.8rem);
  font-weight: 400;
  color: var(--dark-brown);
  margin-bottom: 14px;
}

.home-product-card p {
  color: var(--olive);
  line-height: 1.85;
}

.home-products-cta {
  display: flex;
  align-items: center;
  gap: 22px;
  flex-wrap: wrap;
  margin-top: -10px;
}

.home-products-cta p {
  font-family: var(--font-display);
  font-size: clamp(1.35rem, 2vw, 1.9rem);
  color: var(--dark-brown);
}

.home-products-button {
  background: var(--dark-brown);
  color: var(--cream);
  padding: 14px 36px;
  font-family: var(--font-body);
  font-size: .75rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  text-decoration: none;
  transition: background .25s;
}

.home-products-button:hover {
  background: var(--taupe);
}

footer {
  background: var(--footer-bg, #111);
  padding: var(--footer-padding, 64px 0 32px);
}

.footer-grid {
  display: grid;
  grid-template-columns: var(--footer-grid-columns, minmax(220px, 1.05fr) minmax(150px, .65fr) minmax(320px, 1.8fr));
  gap: var(--footer-grid-gap, 60px);
  margin-bottom: var(--footer-grid-margin, 56px);
}

.footer-brand a {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  margin-bottom: var(--footer-brand-link-margin, 12px);
}

.footer-brand a img {
  display: block;
  width: var(--footer-logo-width, 250px);
  height: auto;
  max-height: var(--footer-logo-max-height, 84px);
  object-fit: contain;
  object-position: left center;
}

.footer-brand p {
  font-size: var(--footer-brand-size, .92rem);
  color: var(--footer-brand-color, rgba(255,255,255,.4));
  line-height: 1.8;
  max-width: var(--footer-brand-max-width, none);
  margin-bottom: var(--footer-brand-margin-bottom, 0);
}

.footer-brand-contact {
  margin-top: 30px;
}

.footer-brand-contact h4 {
  font-size: var(--footer-heading-size, .74rem);
  letter-spacing: var(--footer-heading-spacing, .3em);
  text-transform: uppercase;
  color: var(--footer-heading-color, rgba(255,255,255,.4));
  margin-bottom: var(--footer-heading-margin, 20px);
}

.footer-col h4 {
  font-size: var(--footer-heading-size, .74rem);
  letter-spacing: var(--footer-heading-spacing, .3em);
  text-transform: uppercase;
  color: var(--footer-heading-color, rgba(255,255,255,.4));
  margin-bottom: var(--footer-heading-margin, 20px);
}

.footer-col ul {
  list-style: none;
}

.footer-col ul li {
  margin-bottom: var(--footer-list-gap, 10px);
}

.footer-col ul li a {
  font-size: var(--footer-link-size, .96rem);
  color: var(--footer-link-color, rgba(255,255,255,.6));
  text-decoration: none;
  transition: color .2s ease;
}

.footer-col ul li a:hover {
  color: var(--footer-link-hover, #fff);
}

.footer-contact p {
  font-size: var(--footer-contact-size, .96rem);
  color: var(--footer-contact-color, rgba(255,255,255,.6));
  margin-bottom: var(--footer-contact-gap, 8px);
}

.footer-contact a {
  color: var(--footer-contact-color, rgba(255,255,255,.6));
  text-decoration: none;
}

.footer-social {
  display: flex;
  gap: var(--footer-social-gap, 16px);
  margin-top: var(--footer-social-margin-top, 16px);
}

.footer-social a {
  width: 36px;
  height: 36px;
  border: 1px solid var(--footer-social-border, rgba(255,255,255,.2));
  border-radius: var(--footer-social-radius, 0);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--footer-social-color, rgba(255,255,255,.6));
  font-size: .75rem;
  text-decoration: none;
  transition: all .2s ease;
}

.footer-social a svg {
  width: 18px;
  height: 18px;
  fill: currentColor;
  display: block;
}

.footer-social a:hover {
  border-color: var(--footer-social-hover-border, #fff);
  color: var(--footer-social-hover-color, #fff);
}

.footer-instagram__heading {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  margin-bottom: var(--footer-heading-margin, 20px);
}

.footer-instagram__heading h4 {
  margin-bottom: 0;
}

.footer-instagram__heading a,
.footer-instagram__fallback {
  color: var(--footer-link-color, rgba(255,255,255,.6));
  font-size: .82rem;
  text-decoration: none;
  transition: color .2s ease;
}

.footer-instagram__heading a:hover,
.footer-instagram__fallback:hover {
  color: var(--footer-link-hover, #fff);
}

.footer-instagram__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
}

.footer-instagram__item {
  position: relative;
  display: block;
  aspect-ratio: 1;
  overflow: hidden;
  background: rgba(255,255,255,.08);
}

.footer-instagram__item img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .25s ease, opacity .25s ease;
}

.footer-instagram__item:hover img {
  opacity: .86;
  transform: scale(1.04);
}

.footer-instagram__fallback {
  grid-column: 1 / -1;
  line-height: 1.6;
}

.footer-bottom {
  border-top: 1px solid var(--footer-bottom-border, rgba(255,255,255,.08));
  padding-top: 24px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
}

.footer-bottom p {
  font-size: .82rem;
  color: var(--footer-bottom-color, rgba(255,255,255,.3));
}

.footer-bottom a {
  font-size: .82rem;
  color: var(--footer-bottom-color, rgba(255,255,255,.3));
  text-decoration: none;
}

.newsletter-modal {
  position: fixed;
  inset: 0;
  z-index: 220;
  display: grid;
  place-items: center;
  padding: 28px;
}

.newsletter-modal[hidden] {
  display: none;
}

.newsletter-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(17,14,12,.62);
  backdrop-filter: blur(8px);
}

.newsletter-modal__dialog {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(230px, .72fr) minmax(340px, 1fr);
  width: min(1040px, 100%);
  max-height: min(88vh, 780px);
  overflow: auto;
  background: #fbf7f1;
  color: var(--dark-brown);
  box-shadow: 0 30px 90px rgba(0,0,0,.34);
  outline: none;
}

.newsletter-modal__close {
  position: fixed;
  top: 22px;
  right: 22px;
  z-index: 2;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 54px;
  height: 54px;
  border: 1px solid rgba(44,36,32,.22);
  background: rgba(255,255,255,.94);
  color: var(--dark-brown);
  font: inherit;
  font-size: 2rem;
  line-height: 1;
  cursor: pointer;
  box-shadow: 0 12px 34px rgba(0,0,0,.16);
  transition: background .2s ease, border-color .2s ease, transform .2s ease;
}

.newsletter-modal__close:hover,
.newsletter-modal__close:focus-visible {
  background: #fff;
  border-color: rgba(44,36,32,.38);
  transform: translateY(-1px);
}

.newsletter-modal__image {
  min-height: 100%;
  background:
    linear-gradient(180deg, rgba(44,36,32,.08), rgba(44,36,32,.02)),
    url("../images/door-mijn-lens-nieuwsbrief.jpg") center center/contain no-repeat;
}

.newsletter-modal__content {
  padding: clamp(28px, 4.4vw, 48px);
  background: #fff;
}

.newsletter-modal__kicker {
  margin-bottom: 14px;
  color: var(--accent);
  font-size: .72rem;
  letter-spacing: .26em;
  text-transform: uppercase;
}

.newsletter-modal__content h2 {
  max-width: 540px;
  margin-bottom: 18px;
  color: var(--dark-brown);
  font-family: var(--font-display);
  font-size: clamp(2rem, 3vw, 2.8rem);
  font-weight: 400;
  line-height: 1.04;
}

.newsletter-modal__content > p:not(.newsletter-modal__kicker) {
  color: var(--mid-brown);
  font-size: .98rem;
  line-height: 1.68;
}

.newsletter-modal__form {
  display: grid;
  gap: 12px;
  margin-top: 22px;
}

.newsletter-modal__form label {
  display: grid;
  gap: 8px;
}

.newsletter-modal__hp {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.newsletter-modal__form label > span {
  color: var(--olive);
  font-size: .7rem;
  letter-spacing: .16em;
  text-transform: uppercase;
}

.newsletter-modal__form input[type="text"],
.newsletter-modal__form input[type="email"] {
  width: 100%;
  min-height: 46px;
  padding: 12px 15px;
  border: 1px solid rgba(44,36,32,.14);
  background: #fbf7f1;
  color: var(--dark-brown);
  font: inherit;
  outline: none;
}

.newsletter-modal__form input:focus {
  border-color: rgba(44,36,32,.42);
}

.newsletter-modal__consent {
  grid-template-columns: 18px minmax(0, 1fr);
  align-items: start;
  gap: 11px;
}

.newsletter-modal__consent input {
  width: 18px;
  height: 18px;
  margin-top: 2px;
  accent-color: var(--dark-brown);
}

.newsletter-modal__consent span {
  letter-spacing: 0;
  text-transform: none;
  line-height: 1.6;
}

.newsletter-modal__status {
  padding: 11px 13px;
  background: rgba(69, 92, 72, .1);
  border: 1px solid rgba(69, 92, 72, .22);
  color: var(--olive);
  font-size: .9rem;
  line-height: 1.5;
}

.newsletter-modal__status[data-type="error"] {
  background: rgba(128, 55, 42, .1);
  border-color: rgba(128, 55, 42, .24);
  color: #80372a;
}

.newsletter-modal__form button {
  min-height: 50px;
  padding: 13px 24px;
  border: 1px solid var(--dark-brown);
  background: var(--dark-brown);
  color: #fff;
  font: inherit;
  font-size: .72rem;
  letter-spacing: .16em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background .2s ease, color .2s ease;
}

.newsletter-modal__form button:disabled {
  cursor: wait;
  opacity: .72;
}

.newsletter-modal__form button:not(:disabled):hover,
.newsletter-modal__form button:not(:disabled):focus-visible {
  background: transparent;
  color: var(--dark-brown);
}

.newsletter-modal__form .newsletter-modal__skip {
  min-height: auto;
  padding: 6px 0;
  border: 0;
  background: transparent;
  color: var(--olive);
  font-size: .76rem;
  letter-spacing: .08em;
  text-decoration: underline;
  text-underline-offset: 4px;
}

.newsletter-modal__form .newsletter-modal__skip:hover,
.newsletter-modal__form .newsletter-modal__skip:focus-visible {
  background: transparent;
  color: var(--dark-brown);
}

body.newsletter-modal-open {
  overflow: hidden;
}

body.newsletter-modal-open .whatsapp-bubble {
  display: none;
}

.whatsapp-bubble {
  position: fixed;
  right: 26px;
  bottom: 26px;
  z-index: 120;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 62px;
  height: 62px;
  border-radius: 50%;
  background: #25d366;
  color: #fff;
  box-shadow: 0 16px 34px rgba(0,0,0,.22);
  text-decoration: none;
  transition: transform .2s ease, box-shadow .2s ease, background .2s ease;
}

.whatsapp-bubble svg {
  display: block;
  width: 32px;
  height: 32px;
  fill: currentColor;
}

.whatsapp-bubble:hover {
  background: #1ebe5d;
  box-shadow: 0 20px 42px rgba(0,0,0,.28);
  transform: translateY(-3px);
}

.whatsapp-bubble:focus-visible {
  outline: 3px solid rgba(255,255,255,.95);
  outline-offset: 4px;
}

body.menu-open .whatsapp-bubble {
  display: none;
}

@media (max-width: 650px) {
  nav {
    padding: 14px 18px;
  }

  .nav-links {
    display: none;
  }

  .nav-logo img {
    width: clamp(160px, 52vw, 230px);
    max-height: 52px;
  }

  .nav-cta {
    display: none;
  }

  .nav-toggle {
    display: inline-flex;
    position: relative;
    z-index: 103;
    flex-shrink: 0;
  }

  nav.menu-open {
    bottom: 0;
    align-items: flex-start;
  }

  nav.menu-open .nav-logo {
    position: relative;
    z-index: 103;
  }

  nav.menu-open .nav-toggle span:nth-child(1) {
    transform: translateY(6px) rotate(45deg);
  }

  nav.menu-open .nav-toggle span:nth-child(2) {
    opacity: 0;
  }

  nav.menu-open .nav-toggle span:nth-child(3) {
    transform: translateY(-6px) rotate(-45deg);
  }

  .mobile-menu {
    position: absolute;
    top: 74px;
    left: 0;
    right: auto;
    bottom: 0;
    width: 100dvw;
    display: block;
    z-index: 101;
    background: rgba(17,14,12,.72);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .2s ease, visibility .2s ease;
  }

  nav.menu-open .mobile-menu {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }

  .mobile-menu-panel {
    position: absolute;
    top: 0;
    right: 0;
    left: 0;
    width: 100dvw;
    min-height: 100%;
    padding: 22px 24px 32px;
    box-sizing: border-box;
    background: rgba(26,22,18,.98);
    box-shadow: 0 28px 80px rgba(0,0,0,.32);
    transform: translateY(-10px);
    transition: transform .22s ease;
    overflow-y: auto;
  }

  nav.menu-open .mobile-menu-panel {
    transform: translateY(0);
  }

  .mobile-menu-panel a,
  .mobile-menu-label {
    display: flex;
    align-items: center;
    min-height: 48px;
    color: rgba(255,255,255,.82);
    text-decoration: none;
    font-size: .82rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    border-bottom: 1px solid rgba(255,255,255,.08);
  }

  .mobile-menu-panel a.active,
  .mobile-menu-label.active {
    color: #fff;
  }

  .mobile-menu-group > a,
  .mobile-menu-group > .mobile-menu-label {
    border-bottom-color: rgba(255,255,255,.12);
  }

  .mobile-submenu {
    padding: 8px 0 12px 18px;
  }

  .mobile-submenu a {
    min-height: 44px;
    font-size: .72rem;
    letter-spacing: .12em;
    color: rgba(255,255,255,.62);
  }

  .mobile-menu-cta {
    justify-content: center;
    min-height: 52px;
    margin-top: 22px;
    border: 1px solid rgba(255,255,255,.5) !important;
    color: #fff !important;
    text-align: center;
  }

  .footer-social a {
    width: 44px;
    height: 44px;
  }

  .home-products {
    background: var(--cream);
    padding: 64px 0;
  }

  .home-products-inner {
    grid-template-columns: 1fr;
    gap: 40px;
    min-height: auto;
  }

  .home-products::before {
    inset: 0;
    width: auto;
    background-position: center top;
    mask-image: linear-gradient(180deg, rgba(0,0,0,1) 22%, rgba(0,0,0,.84) 42%, rgba(0,0,0,.34) 58%, transparent 76%);
    -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,1) 22%, rgba(0,0,0,.84) 42%, rgba(0,0,0,.34) 58%, transparent 76%);
  }

  .home-products::after {
    background: linear-gradient(180deg, rgba(245,240,234,.24) 0%, rgba(245,240,234,.82) 34%, var(--cream) 62%);
  }

  .home-products-intro {
    padding-top: 200px;
  }

  .home-product-ribbon {
    grid-template-columns: 1fr;
  }

  .footer-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 40px;
  }

  .footer-instagram {
    grid-column: 1 / -1;
  }

  .footer-bottom {
    flex-direction: column;
    align-items: flex-start;
  }

  .footer-bottom a {
    margin-left: 0;
    margin-right: var(--footer-bottom-link-gap, 16px);
  }

  .newsletter-modal {
    padding: 18px;
  }

  .newsletter-modal__dialog {
    grid-template-columns: 1fr;
    max-height: 90vh;
  }

  .newsletter-modal__image {
    min-height: 280px;
    background-size: contain;
  }

  .newsletter-modal__content {
    padding: 28px;
  }
}

@media (max-width: 650px) {
  .newsletter-modal {
    padding: 12px;
    align-items: end;
  }

  .newsletter-modal__dialog {
    width: 100%;
    max-height: 92vh;
  }

  .newsletter-modal__close {
    top: 14px;
    right: 14px;
    width: 48px;
    height: 48px;
  }

  .newsletter-modal__image {
    min-height: 220px;
  }

  .newsletter-modal__content {
    padding: 24px 20px 22px;
  }

  .newsletter-modal__content h2 {
    font-size: clamp(1.8rem, 10vw, 2.35rem);
  }

  .whatsapp-bubble {
    right: 18px;
    bottom: 18px;
    width: 56px;
    height: 56px;
  }

  .whatsapp-bubble svg {
    width: 29px;
    height: 29px;
  }

  .footer-grid {
    grid-template-columns: 1fr;
    gap: 34px;
  }
}
