/* ==========================
   Protocore Website Styles
   ========================== */

/* ==========================
   Base Styles & Reset
   ========================== */
html, body {
  font-family: 'Inter', system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji";
}
/* Base */
* { box-sizing: border-box; }
html, body { 
  height: 100%; 
  overflow-x: hidden; /* Alleen horizontaal scrollen blokkeren */
  overflow-y: auto; /* Verticaal scrollen toestaan */
}
body {
    margin: 0;
  font-family: "Inter", system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;
  color: #111;
  background: #fff;
}

/* CSS Variabelen */
:root { 
  --logo-nudge: 0px;           /* GetCTM-based crop is nu exact gecentreerd - geen nudge nodig */
  --text-nudge: 0px;           /* teksten weer standaard centreren */
  --page-pad: 12px;
}

/* ====== GLOBAL small helpers ====== */
/* Lock body scroll when mobile menu is open */
body.no-scroll {
  height: 100vh;
  overflow: hidden;
}

/* Accessibility utilities */
.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}

.skip-link {
  position: absolute; left: 12px; top: 8px;
  background: #111; color: #fff; padding: 8px 12px; border-radius: 8px;
  transform: translateY(-150%);
  text-decoration: none; z-index: 9999;
}
.skip-link:focus { transform: translateY(0); }

/* Smooth scrolling for in-page anchors (respects reduced motion) */
html { 
  scroll-behavior: smooth;
  scroll-snap-type: y mandatory;
}

/* Scroll snap voor alle secties - alleen op desktop */
section {
  scroll-snap-align: start;
  scroll-snap-stop: always;
}

/* Op mobiel: scroll snap UIT */
@media (max-width: 768px) {
  html {
    scroll-snap-type: none;
  }
  
  section {
    scroll-snap-align: none;
    scroll-snap-stop: normal;
    min-height: 100vh;
    min-height: -webkit-fill-available;
  }
}

/* Op desktop (MacBook en groter): scroll snap weer aan */
@media (min-width: 769px) {
  html {
    scroll-snap-type: y mandatory;
  }
  
  section {
    scroll-snap-align: start;
    scroll-snap-stop: always;
  }
}

/* Focus visibility */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible {
  outline: 2px solid #111; outline-offset: 2px;
}

/* Container */
.container { width: min(1200px, 92vw); margin: 0 auto; }

/* ==========================
   Expertise Section (Page 2)
   ========================== */
.page2-section {
  position: relative;
  padding: clamp(16px, 3vw, 48px) 0 clamp(48px, 8vw, 96px) 0;
  background: radial-gradient(1200px 600px at 20% 10%, rgba(255,255,255,0.12), transparent 60%), linear-gradient(180deg, #f5f5f5, #e8e8e8);
  overflow: visible;
  min-height: 100vh;
  width: 100%;
  z-index: 1;
}

.page2-overlay {
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    135deg,
    rgba(0,0,0,0.04) 0,
    rgba(0,0,0,0.04) 2px,
    rgba(255,255,255,0.04) 2px,
    rgba(255,255,255,0.04) 4px
  );
  mix-blend-mode: overlay;
  pointer-events: none;
}

.page2-content {
  position: relative;
  text-align: left;
  color: #333;
  padding: 0;
  z-index: 1;
}

.page2-content .services-header {
  text-align: left;
}

.page2-content .services-title {
  color: #111;
}

.page2-content .services-description {
  color: #333;
}

/* Minimal top-right nav */
.top-nav { position: fixed; right: clamp(12px, 3vw, 32px); top: clamp(12px, 2vh, 24px); z-index: 100; display:flex; gap: 14px; align-items:center; }
.top-nav .nav-menu { display: flex; gap: 14px; align-items: center; }
.top-nav a { 
  text-decoration:none; 
  color:#d47300; 
  font-weight:600; 
  padding: 6px 12px; 
  border-radius: 8px;
  text-transform: uppercase;
  border: none; /* Geen kader */
  font-size: 0.7em;
  letter-spacing: 0.05em;
  width: 90px;
  height: 32px;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 0;
  animation: nav-fade-in 800ms ease-out 1 both;
}
.top-nav .nav-menu a:nth-child(1) { animation-delay: 3350ms; } /* Home */
.top-nav .nav-menu a:nth-child(2) { animation-delay: 3450ms; } /* Expertise */
.top-nav .nav-menu a:nth-child(3) { animation-delay: 3550ms; } /* About */
.top-nav .nav-menu a:nth-child(4) { animation-delay: 3650ms; } /* Contact */
/* Hamburger menu button */
.hamburger {
  display: none; /* Verborgen op desktop */
  background: none;
  border: none; /* Geen kader */
  width: 40px;
  height: 40px;
  padding: 8px;
  cursor: pointer;
  flex-direction: column;
  justify-content: space-around;
  align-items: center;
  z-index: 101;
  position: relative;
}
.hamburger span {
  width: 24px;
  height: 2px;
  background: #111;
  transition: all 0.3s ease;
  display: block;
}
.hamburger[aria-expanded="true"] span:nth-child(1) {
  transform: rotate(45deg) translate(8px, 8px);
}
.hamburger[aria-expanded="true"] span:nth-child(2) {
  opacity: 0;
}
.hamburger[aria-expanded="true"] span:nth-child(3) {
  transform: rotate(-45deg) translate(7px, -7px);
}
.top-nav a:hover { 
  background:#d47300; 
  color:#fff; 
}

/* Witte navigatie knoppen voor donkere achtergronden (grijs en oranje) */
.top-nav.on-dark a {
  color: #d47300 !important;
}

.top-nav.on-dark a:hover {
  background: #d47300;
  color: #fff;
}

.top-nav.on-dark .hamburger span {
  background: #fff;
}

.top-nav.on-orange a {
  color: #fff !important;
}

.top-nav.on-orange a:hover {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}

.top-nav.on-orange .hamburger span {
  background: #fff;
}

/* Hero */
.hero{
  min-height: 100vh; /* fallback voor oudere browsers */
  min-height: 100svh; /* small viewport height voor moderne browsers */
  position: relative;
  display: grid;
  place-content: center;
  padding-block: clamp(24px,5vh,80px);
}

.hero-overlay { position:absolute; inset:0; pointer-events:none; }

.hero-content{
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: 12px;
}

/* Logo specifiek: zelfde centering als test sectie - GPU accelerated */
#logo {
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  opacity: 0;
  animation: logo-fly-in 800ms cubic-bezier(0.25, 0.46, 0.45, 0.94) 0ms 1 forwards;
  overflow: visible; /* Laat punt buiten container bewegen */
  position: relative;
  z-index: 1; /* Zorg dat logo zichtbaar blijft boven overlay */
  will-change: transform, opacity; /* GPU acceleration voor betere performance */
  transform: translateZ(0); /* Force hardware acceleration */
}

/* Logo 20% kleiner gemaakt - donkergrijs */
#logo svg,
#logo img {
  display: block;
  width: clamp(416px, 54vw, 1040px);
  height: auto;
  overflow: visible; /* Laat punt buiten viewBox bewegen */
}

/* Logo SVG elementen donkergrijs maken */
#logo svg * {
  fill: #333 !important;
}

/* Safari-only nudge to keep texts perfectly under the logo */
@supports (-webkit-touch-callout: none) {
  .hero-subtitle,
  .hero-description {
    margin-left: 0; /* whitespace weg → standaard centreren */
    text-align: center;
  }
}

/* Belangrijk voor juiste rotatie en scale */
svg * { transform-box: fill-box; transform-origin: center; }

/* Animaties alleen starten als svg .run-anim heeft (na crop) */
#logo svg:not(.run-anim) #_x23_Letter_x5F_x5F_x5F_E,
#logo svg:not(.run-anim) #_x23_Letter_x5F_x5F_x5F_Punt {
  animation: none !important;
  transform: none !important; /* zodat de crop op 'rust' kan gebeuren */
}

/* Hero teksten - donkergrijs */
.hero-subtitle{
  font-weight: 300; letter-spacing: 0.18em; text-transform: uppercase;
  font-size: clamp(11px, 1.45vw, 15px); color: #333; margin:0;
  text-align: center;
  margin-left: 0;
}

.hero-subtitle span {
  display: inline-block;
  opacity: 0;
  animation: text-fade-in 600ms ease-out 1 both;
}

.hero-subtitle .hero-word-1 {
  animation-delay: 600ms;
}

.hero-subtitle .hero-word-2 {
  animation-delay: 1200ms;
}

.hero-subtitle .hero-word-3 {
  animation-delay: 1800ms;
}
.hero-description{
  font-weight: 300; 
  font-size: clamp(13px, 1.6vw, 17px); 
  color: #333; 
  margin:0;
  opacity: 0;
  animation: text-fade-in 600ms ease-out 2750ms 1 both;
  text-align: center;
  margin-left: 0;
  text-transform: uppercase;
  letter-spacing: 0.03em;
}
/* Tekstafstand onder logo - 2x meer ruimte tussen logo en teksten */
.hero-subtitle { margin-top: 64px; }
.hero-subtitle span { margin-right: 0.5em; }
.hero-description { margin-top: 10px; }

/* Hero buttons als vervanging van top navigatie */
.hero-buttons { display:flex; gap: 12px; justify-content:center; flex-wrap: wrap; margin-top: 8px; }
.hero-button { display:inline-block; padding: 10px 14px; border-radius: 999px; border:1px solid #ddd; background:#fff; color:#111; text-decoration:none; font-weight: 600; }
.hero-button:hover { background:#111; color:#fff; }

/* Scroll indicator */
.scroll-indicator{ 
  position:absolute; 
  left:50%; 
  bottom: clamp(40px, 10vh, 80px); 
  transform: translateX(-50%); 
  text-align:center; 
  color:#777; 
  font-size:12px;
  opacity: 0;
  animation: scroll-fade-in 600ms ease-out 4650ms 1 both;
}
.scroll-indicator .mouse{ width:24px; height:36px; border:2px solid #bbb; border-radius:16px; margin:0 auto 6px; position:relative; }
.scroll-indicator .wheel{ width:2px; height:8px; background:#bbb; border-radius:2px; position:absolute; left:50%; top:6px; transform:translateX(-50%); animation: wheel 1.2s ease-in-out infinite; }
@keyframes wheel{ 0%{opacity:0; transform:translate(-50%,0)} 50%{opacity:.9} 100%{opacity:0; transform:translate(-50%,10px)} }

/* About */
.section-header { text-align:center; margin-bottom: 24px; }
.section-title { font-size: clamp(22px, 3vw, 36px); margin: 0 0 8px 0; }
.title-underline { width: 60px; height: 3px; background:#111; margin: 0 auto; border-radius: 3px; }
.section-description {
  max-width: 800px;
  margin: 16px auto 0;
  font-size: clamp(14px, 1.5vw, 18px);
  line-height: 1.6;
  color: #333;
}
/* About Section - Effen grijs gradient naar wit, zonder strepen */
.about-section {
  position: relative;
  padding: clamp(16px, 3vw, 48px) 0 clamp(48px, 8vw, 96px) 0 !important; 
  background: #e0e0e0 !important;
  background-image: linear-gradient(180deg, #e0e0e0 0%, #ffffff 100%) !important;
  overflow: visible;
  min-height: 50vh;
  width: 100%;
  z-index: 1;
}

.about-section-overlay {
  display: none;
}

.about-section .container {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: calc(100vh - clamp(80px, 12vw, 120px));
}

/* About Content */
.about-content {
  width: 100%;
}

.about-title {
  font-size: clamp(28px, 4vw, 36px);
  font-weight: 400;
  color: #111;
  margin: 0 0 12px 0;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  text-align: left;
}

.about-title-line {
  width: 120px;
  height: 2px;
  background: #d47300;
  margin-bottom: clamp(12px, 2vw, 16px);
  box-shadow: 0 0 2px rgba(212, 115, 0, 0.5);
}

.about-text {
  font-size: clamp(13px, 1.4vw, 15px);
  color: #333;
  line-height: 1.8;
  margin: 0 0 clamp(6px, 1vw, 9px) 0;
  text-align: left;
  font-weight: 200;
  letter-spacing: 0.02em;
}

.about-text:last-of-type {
  margin-bottom: 0;
}

.about-photo-container {
  width: 100%;
  margin: clamp(32px, 5vw, 48px) 0 0 0;
  text-align: center;
  height: clamp(250px, 30vw, 400px);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  border: 1px solid #d47300;
  border-radius: 8px;
  padding: 0;
}

.about-photo {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 60%;
  display: block;
  filter: grayscale(100%) contrast(1.1) brightness(0.9);
  transition: filter 0.3s ease, transform 0.3s ease;
}

/* Hover effect voor foto - alleen op devices met pointer */
@media (hover: hover) and (pointer: fine) {
  .about-photo:hover {
    filter: grayscale(80%) contrast(1.2) brightness(1);
    transform: scale(1.01);
  }
  
  .contact-item p a:hover {
    color: #d47300;
  }
}

/* Large Photo */
.about-main-photo {
  width: 100%;
  margin-top: clamp(20px, 3vw, 32px);
  max-height: 50vh;
  overflow: hidden;
}

.about-main-photo img {
  width: 100%;
  height: 100%;
  max-height: 50vh;
  display: block;
  border-radius: 8px;
  object-fit: cover;
}

/* Removed old About CSS - moved to Services */
.about-photos {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(20px, 4vw, 40px);
  margin-bottom: clamp(60px, 8vw, 100px);
}

.about-photo {
  aspect-ratio: 4/3;
  background: #2a2a2a;
  border-radius: 8px;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, 0.1);
}

.about-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.about-photo-placeholder {
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  color: #666;
  font-size: 14px;
  text-align: center;
  padding: 20px;
}

/* Process Section */
.about-process {
  margin-top: clamp(60px, 8vw, 100px);
}

.about-process-title {
  font-size: clamp(28px, 4vw, 36px);
  font-weight: 400;
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0 0 12px 0;
  padding-left: 0;
  text-align: left;
}

.about-process-title-line {
  width: 120px;
  height: 3px;
  background: #d47300;
  margin-bottom: clamp(40px, 6vw, 60px);
}

.about-process-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(24px, 4vw, 40px);
}

.about-process-card {
  background: #242424;
  border: 1px solid rgba(212, 115, 0, 0.3);
  border-radius: 12px;
  padding: clamp(32px, 5vw, 48px);
  text-align: center;
  transition: transform 0.3s ease, border-color 0.3s ease;
}

.about-process-card:hover {
  transform: translateY(-5px);
  border-color: rgba(212, 115, 0, 0.6);
}

.about-process-icon-container {
  width: 64px;
  height: 64px;
  background: #d47300;
  border-radius: 8px;
  margin: 0 auto 24px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.about-process-icon-container img {
  width: 36px;
  height: 36px;
  object-fit: contain;
  filter: brightness(0) invert(1);
}

.about-process-card h3 {
  font-size: clamp(18px, 2.2vw, 22px);
  font-weight: 700;
  color: #fff;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0 0 16px 0;
}

.about-process-card p {
  font-size: clamp(14px, 1.5vw, 16px);
  color: #d0d0d0;
  line-height: 1.7;
  margin: 0;
}

/* Placeholder image block */
.image-placeholder { display:grid; place-items:center; height: 280px; border:2px dashed #ddd; border-radius: 12px; color:#999; }

/* Services / Expertise */
.services { 
  position: relative;
  padding: clamp(16px, 3vw, 48px) 0 !important; 
  background: #ffffff !important;
  background-image: 
    repeating-linear-gradient(
      0deg,
      #ffffff,
      #ffffff 29px,
      #d0d0d0 29px,
      #d0d0d0 30px
    ),
    repeating-linear-gradient(
      90deg,
      #ffffff,
      #ffffff 29px,
      #d0d0d0 29px,
      #d0d0d0 30px
    ) !important;
  background-size: 30px 30px !important;
  overflow: visible;
  min-height: 50vh;
  width: 100%;
  z-index: 1;
}
.services-header { margin-bottom: clamp(20px, 3vw, 30px); }
.services-title { font-size: clamp(28px, 4vw, 36px); font-weight: 400; color: #111; text-transform: uppercase; letter-spacing: 0.05em; margin: 0 0 12px 0; }
.services-title-line { width: 120px; height: 2px; background: #d47300; margin-bottom: clamp(12px, 2vw, 16px); }
.services-description { 
  font-size: clamp(13px, 1.4vw, 15px); 
  color: #444; 
  line-height: 1.8; 
  margin: 0 0 clamp(6px, 1vw, 9px) 0; 
  text-transform: none;
  font-weight: 200;
  letter-spacing: 0.02em;
}

.services-description:last-of-type {
  margin-bottom: 0;
}

.services-choose-path {
  font-size: clamp(16px, 1.8vw, 20px);
  color: #444;
  text-transform: uppercase;
  font-weight: 300;
  letter-spacing: 0.15em;
  text-align: center;
  margin: clamp(32px, 5vw, 48px) auto 0;
  width: 100%;
}

/* Process Section (moved from About with orange background) */
.services-process {
  margin-top: clamp(40px, 6vw, 60px);
  width: 100%;
}

.services-process-title {
  font-size: clamp(28px, 4vw, 36px);
  font-weight: 400;
  color: #111;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0 0 12px 0;
  text-align: left;
}

.services-process-title-line {
  width: 120px;
  height: 3px;
  background: #d47300;
  margin-bottom: clamp(40px, 6vw, 60px);
}

.services-process-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(20px, 3vw, 32px);
}

@media (max-width: 980px) {
  .services-process-cards {
    grid-template-columns: repeat(2, 1fr);
    gap: clamp(20px, 3vw, 28px);
  }
}


.services-process-card {
  background: linear-gradient(135deg, #2f2f2f 0%, #242424 50%, #2f2f2f 100%);
  border: 1px solid #d47300;
  border-radius: 12px;
  padding: clamp(32px, 5vw, 48px);
  text-align: center;
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.1), inset 0 -1px 0 rgba(0, 0, 0, 0.2);
  position: relative;
  overflow: hidden;
}

/* Hover effect - alleen op devices met pointer (niet touch) */
@media (hover: hover) and (pointer: fine) {
.services-process-card:hover {
  transform: translateY(-5px);
    background: linear-gradient(135deg, #373737 0%, #2c2c2c 50%, #373737 100%);
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.3);
    border-color: #e6891a;
}

  .services-process-card:hover .card-hover-image {
    opacity: 0.3;
  }
}

/* Touch devices: active state in plaats van hover */
.services-process-card:active {
  transform: translateY(-2px);
}

.services-process-card.card-image-active {
  transform: translateY(-2px);
  background: linear-gradient(135deg, #373737 0%, #2c2c2c 50%, #373737 100%);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.4), inset 0 1px 0 rgba(255, 255, 255, 0.15), inset 0 -1px 0 rgba(0, 0, 0, 0.3);
  border-color: #e6891a;
}

.card-hover-image {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  opacity: 0;
  transition: opacity 0.3s ease;
  z-index: 0;
  border-radius: 12px;
}

.services-process-card.card-image-active .card-hover-image {
  opacity: 0.3;
}

.services-process-card .card-inner {
  display: flex;
  flex-direction: column;
  justify-content: center;
  position: relative;
  z-index: 1;
}

.services-process-card .services-process-icon-container,
.services-process-card h3,
.services-process-card p {
  position: relative;
  z-index: 1;
}

.card-request-text {
  color: #fff;
  font-size: clamp(11px, 1.2vw, 13px);
  font-weight: 400;
  text-transform: lowercase;
  letter-spacing: 0.05em;
  margin-top: 6px !important;
  margin-bottom: 4px !important;
  padding-bottom: 4px !important; /* breathing room from border */
  opacity: 0.7;
  text-align: center;
}

.services-process-icon-container {
  width: clamp(80px, 12vw, 120px);
  height: clamp(80px, 12vw, 120px);
  background: #3d2817;
  border-radius: 10px;
  margin: 0 auto 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: clamp(80px, 12vw, 120px);
  border: none;
}

.services-process-icon-container img {
  width: clamp(50px, 8vw, 70px);
  height: clamp(50px, 8vw, 70px);
  object-fit: contain;
  filter: brightness(0) invert(1);
  display: block;
  opacity: 1;
}

.services-process-card h3 {
  font-size: clamp(18px, 2.2vw, 22px);
  font-weight: 700;
  color: #ffffff;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  margin: 0 0 16px 0;
}

.services-process-card p {
  font-size: clamp(12px, 1.3vw, 14px);
  color: #ffffff;
  line-height: 1.6;
  margin: 0;
  text-transform: uppercase;
  font-weight: 300;
  letter-spacing: 0.03em;
}

/* Contact */
.contact { 
  position: relative;
  padding: clamp(16px, 3vw, 48px) 0 !important; 
  background: #fff; 
  overflow: visible;
  min-height: 100vh;
  width: 100%;
  z-index: 1;
}

.contact-header { margin-bottom: clamp(20px, 3vw, 30px); }
.contact-title { font-size: clamp(28px, 4vw, 36px); font-weight: 400; color: #111; text-transform: uppercase; letter-spacing: 0.05em; margin: 0 0 12px 0; }
.contact-title-line { width: 120px; height: 2px; background: #d47300; margin-bottom: clamp(12px, 2vw, 16px); }
.contact-description { 
  font-size: clamp(13px, 1.4vw, 15px); 
  color: #666; 
  line-height: 1.8; 
  margin: 0 0 clamp(6px, 1vw, 9px) 0; 
  text-transform: none;
  font-weight: 200;
  letter-spacing: 0.02em;
}

.contact-description:last-of-type {
  margin-bottom: 0;
}
.contact-content { display:grid; grid-template-columns: 1fr 1.2fr; gap: clamp(16px, 4vw, 48px); align-items: start; }
.contact-item { display:block; margin-bottom: 18px; }
.contact-item h4 { text-transform: uppercase; font-weight: 600; letter-spacing: 0.06em; margin: 0 0 6px 0; font-size: 12px; color:#111; }
.contact-item p { text-transform: none; font-weight: 200; letter-spacing: 0.02em; font-size: clamp(13px, 1.4vw, 15px); color:#222; line-height: 1.8; }
.contact-item p a { color: #222; text-decoration: none; transition: color 0.2s ease; }
.contact-icon { font-size: 18px; width: 24px; text-align:center; }
.form-group { margin-bottom:10px; }
input, textarea { 
  width:100%; 
  padding:12px 14px; 
  border:1px solid #ddd; 
  border-radius:10px; 
  font: inherit; 
  font-size: 16px; 
  color: #666;
}
input::placeholder, textarea::placeholder {
  color: #999;
}
.submit-button { padding: 12px 18px; border:0; border-radius: 10px; background:#111; color:#fff; font-weight: 500; cursor:pointer; }
.submit-button:hover { background:#000; }

/* Footer */
.footer { padding: 12px 0; background:#111; color:#fff; margin-top: 24px; }
.footer-bottom { text-align:center; color:#bbb; font-size: 12px; }

/* Logo vliegt eerst van rechts naar links - werkt met flexbox centering */
@keyframes logo-fly-in {
  0%   { transform: translateX(100vw); opacity: 0; }
  100% { transform: translateX(0); opacity: 1; }
}

/* Animaties voor jouw SVG-groepen (IDs uit je bestand) */
/* E start op 50°, draait naar 60° wanneer punt op verste punt is, dan schokkend naar 0° - langzamer */
#_x23_Letter_x5F_x5F_x5F_E {
  animation: e-jerk 1700ms cubic-bezier(.15,.9,.1,1) 900ms 1 both;
  transform: rotate(50deg);
  will-change: transform; /* GPU acceleration */
}

/* Punt komt binnen van rechts naar links - beweegt onafhankelijk over scherm, langer schuiven */
#_x23_Letter_x5F_x5F_x5F_Punt {
  transform-box: fill-box;
  transform-origin: center;
  animation: punt-in 1300ms ease-out 900ms 1 both;
  will-change: transform, opacity; /* GPU acceleration */
}

@keyframes e-jerk {
  0%   { transform: rotate(50deg); }
  60%  { transform: rotate(50deg); } /* Blijft langer stil, punt heeft meer tijd om te schuiven */
  70%  { transform: rotate(70deg); } /* Draait verder bij raken */
  76%  { transform: rotate(18deg); }
  78%  { transform: rotate(-14deg); }
  84%  { transform: rotate(10deg); }
  90%  { transform: rotate(-6deg); }
  94%  { transform: rotate(3.5deg); }
  97%  { transform: rotate(-1.8deg); }
  98%  { transform: rotate(0.8deg); }
  99%  { transform: rotate(0.4deg); }
  100% { transform: rotate(0deg); }
}

@keyframes punt-in {
  0%   { transform: translateX(2000px); opacity: 0; } /* helemaal rechts, ver buiten scherm (pixels relatief aan SVG) */
  20%  { transform: translateX(1200px); opacity: 1; } /* komt zichtbaar binnen */
  40%  { transform: translateX(600px); } /* rolt verder naar links */
  60%  { transform: translateX(200px); } /* nadert logo, langer schuiven */
  78%  { transform: translateX(-18px); } /* overshoot iets naar links */
  90%  { transform: translateX(6px); }
  100% { transform: translateX(0); }
}

@keyframes fade-in {
  0%   { opacity: 0; transform: translateY(10px); }
  100% { opacity: 1; transform: translateY(0); }
}

@keyframes text-fade-in {
  0%   { opacity: 0; }
  100% { opacity: 1; }
}

@keyframes scroll-fade-in {
  0%   { opacity: 0; }
  100% { opacity: 1; }
}

@keyframes nav-fade-in {
  0%   { opacity: 0; transform: translateY(-5px); }
  100% { opacity: 1; transform: translateY(0); }
}

/* Responsive */
@media (max-width: 980px){
  .about-content { grid-template-columns: 1fr; }
  .services-grid { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .contact-content { grid-template-columns: 1fr; }
}
/* Grote telefoons en kleine tablets */
@media (min-width: 641px) and (max-width: 768px) {
  .services-process-cards {
    grid-template-columns: 1fr;
    gap: clamp(24px, 4vw, 32px);
  }
  
  .services-process-icon-container {
    width: clamp(90px, 14vw, 120px);
    height: clamp(90px, 14vw, 120px);
  }
  
  .services-process-icon-container img {
    width: clamp(55px, 9vw, 75px);
    height: clamp(55px, 9vw, 75px);
  }
}


/* Tablet / iPad specifiek (768px - 1023px) */
@media (min-width: 768px) and (max-width: 1023px) {
  :root { --logo-nudge: 0px; }
  
  /* Logo medium size voor tablet */
  #logo svg, #logo img { 
    width: clamp(450px, 60vw, 900px); 
  }
  
  /* Teksten medium size */
  .hero-subtitle { 
    font-size: clamp(11px, 2vw, 15px); 
  }
  .hero-description { 
    font-size: clamp(13px, 2.2vw, 17px); 
  }
  
  /* Expertise cards: 2 kolommen op iPad */
  .services-process-cards {
    grid-template-columns: repeat(2, 1fr);
    gap: clamp(20px, 3vw, 28px);
  }
  
  /* Contact form: 2 kolommen op iPad */
  .contact-content {
    grid-template-columns: 1fr 1.2fr;
  }
}

/* Desktop */
@media (min-width: 1024px) {
  :root { --logo-nudge: 0px; }
  
  /* Logo normaal formaat voor desktop (standaard al goed ingesteld) */
  #logo svg, #logo img { 
    width: clamp(416px, 54vw, 1040px); 
  }
}


/* Respect reduced motion preferences */
@media (prefers-reduced-motion: reduce){
  * { animation: none !important; transition: none !important; }
  html { scroll-behavior: auto; }
}


/* === SINGLE MOBILE BREAKPOINT: 640px - ALL MOBILE RULES CONSOLIDATED === */
@media (max-width: 640px) {
  
  /* Container: equal side padding and full width */
  .container {
    width: 100% !important;
    padding-left: clamp(16px, 4vw, 28px) !important;
    padding-right: clamp(16px, 4vw, 28px) !important;
  }

  /* Sections: fill screen */
  section {
    min-height: 100svh !important;
  }

  /* Hamburger menu - JS controlled via .is-open class */
  .top-nav {
    flex-direction: row;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    right: clamp(8px, 2vw, 16px);
    top: clamp(8px, 2vh, 16px);
  }

  .top-nav .nav-menu {
    display: none !important;
    position: absolute;
    top: 50px;
    right: var(--page-pad);
    background: #fff;
    border: none;
    border-radius: 8px;
    padding: 16px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.1);
    min-width: 150px;
    z-index: 102;
  }

  .top-nav .nav-menu.is-open {
    display: flex !important;
    flex-direction: column;
    gap: 12px;
  }

  .nav-menu a {
    border: none !important;
    width: auto;
    min-width: 120px;
    animation: none;
    opacity: 1;
    width: 70px;
    height: 28px;
    font-size: 0.65em;
    padding: 4px 8px;
  }

  .hamburger {
    display: flex !important;
  }

  /* Hero: full screen */
  .hero {
    min-height: 100vh !important;
    min-height: -webkit-fill-available !important;
    height: 100vh !important;
    height: -webkit-fill-available !important;
    padding-block: 0 !important;
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
  }

  .hero-content {
    width: 100%;
    max-width: 100%;
    padding: 0 16px;
    display: flex;
    flex-direction: column;
    align-items: center;
  }

  /* Logo mobile */
  #logo {
    opacity: 0;
    width: 100%;
    min-height: 80px;
    display: flex;
    justify-content: center;
    align-items: center;
    animation: logo-fade-in-mobile 600ms ease-out 200ms 1 forwards,
               logo-fade-fallback 200ms ease-out 500ms 1 forwards;
  }

  @keyframes logo-fade-in-mobile {
    0%   { opacity: 0; }
    100% { opacity: 1; }
  }

  @keyframes logo-fade-fallback {
    to { opacity: 1 !important; transform: none !important; }
  }

  #logo svg, #logo img {
    width: clamp(280px, 70vw, 400px) !important;
    display: block !important;
  }

  /* Hero subtitle: font size en margin, maar animatie via .hero-ready */
  .hero-subtitle {
    font-size: clamp(11px, 2.5vw, 14px) !important;
    margin-top: clamp(24px, 6vh, 40px) !important;
    opacity: 1 !important;
  }
  
  /* Oude animatie regels verwijderd - nu via .hero-ready onderaan */

  .hero-description {
    font-size: clamp(12px, 3.5vw, 16px) !important;
    opacity: 0;
    animation: text-fade-in 600ms ease-out 1500ms 1 both,
               text-fade-fallback 200ms ease-out 2300ms 1 forwards;
  }

  @keyframes text-fade-fallback {
    to { opacity: 1 !important; }
  }

  /* Logo SVG animations */
  #logo svg.run-anim #_x23_Letter_x5F_x5F_x5F_E,
  #logo svg #_x23_Letter_x5F_x5F_x5F_E {
    animation: e-jerk 1700ms cubic-bezier(.15,.9,.1,1) 900ms 1 both !important;
    transform: rotate(50deg);
  }

  #logo svg.run-anim #_x23_Letter_x5F_x5F_x5F_Punt,
  #logo svg #_x23_Letter_x5F_x5F_x5F_Punt {
    animation: punt-in 1300ms ease-out 900ms 1 both !important;
  }

  @keyframes punt-in {
    0%   { transform: translateX(1500px); opacity: 0; }
    20%  { transform: translateX(800px); opacity: 1; }
    40%  { transform: translateX(400px); }
    60%  { transform: translateX(150px); }
    78%  { transform: translateX(-12px); }
    90%  { transform: translateX(4px); }
    100% { transform: translateX(0); }
  }

  /* ABOUT ook lekker gevuld laten voelen */
  .about-section {
    min-height: 100svh !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
    padding-top: 24px !important;
    padding-bottom: 24px !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
  }

  /* Reduce side padding for tighter alignment */
  .about-section .container {
    min-height: auto !important;
    width: 100% !important;
    padding-left: 12px !important;
    padding-right: 12px !important;
  }

  /* Headings + text max width aligned */
  .about-section h1,
  .about-section p,
  .about-section .about-title,
  .about-section .about-title-line,
  .about-section .about-text {
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  .about-title {
    font-size: clamp(20px, 5vw, 28px) !important;
    margin-bottom: 4px !important;
  }

  .about-title-line {
    margin-bottom: clamp(8px, 1.5vh, 12px) !important;
    height: 2px !important;
  }

  .about-text {
    font-size: clamp(12px, 3vw, 14px) !important;
    margin-bottom: clamp(6px, 1.5vh, 10px) !important;
    line-height: 1.5 !important;
  }

  .about-photo-container {
    margin-top: clamp(4px, 0.8vh, 6px) !important;
    height: clamp(100px, 15vh, 130px) !important;
    border-radius: 6px !important;
  }

  .about-photo {
    max-height: 100% !important;
    width: 100% !important;
    object-fit: cover !important;
  }

  .about-photos {
    grid-template-columns: 1fr;
  }

  .about-process-cards {
    grid-template-columns: 1fr;
  }

  /* ====== SECTION WIDTH ALIGNMENT (mobile) ====== */
  /* Zelfde padding links/rechts voor headings én grid */
  .page2-section .page2-content,
  .page2-section .container,
  .about-section .container,
  .contact .container {
    padding-inline: var(--page-pad) !important;
  }

  /* Zorg dat de tekstbreedte visueel uitlijnt met de grid */
  .services-header,
  .services-process {
    width: 100%;
    margin-inline: 0 !important;
    padding-inline: 0 !important;
  }
  
  /* Zorg dat cards grid exact dezelfde padding heeft als de tekst */
  .page2-section .services-process .services-process-cards {
    padding-inline: 0 !important;
    margin-inline: 0 !important;
  }
  
  /* Reset alle mogelijke extra padding/margin die uitlijning kan verstoren */
  .page2-section .services-header *,
  .page2-section .services-process * {
    max-width: 100%;
  }

  /* Page2/Expertise section: full screen with aligned text width */
  .page2-section {
    min-height: 100svh !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: flex-start !important;
    padding-top: 24px !important;
    padding-bottom: 24px !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
  }

  /* Reduce side padding for tighter grid alignment */
  .page2-section .container,
  .page2-content {
    padding-left: var(--page-pad) !important;
    padding-right: var(--page-pad) !important;
  }

  .page2-content {
    width: 100% !important;
    padding-top: clamp(8px, 2vh, 12px) !important;
    padding-bottom: 0 !important;
  }

  /* Headings + text max width matches card grid */
  .page2-section h2,
  .page2-section p,
  .page2-section .services-description,
  .page2-section .services-title-line,
  .page2-section .services-title,
  .page2-section .services-header {
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  .services-header {
    margin-bottom: clamp(2px, 0.5vh, 4px) !important;
  }

  .services-title {
    font-size: clamp(20px, 5vw, 28px) !important;
    margin-bottom: 1px !important;
  }

  .services-title-line {
    margin-bottom: clamp(8px, 1.5vh, 12px) !important;
    height: 2px !important;
  }

  .services-description {
    font-size: clamp(11px, 2.5vw, 13px) !important;
    margin-bottom: clamp(4px, 1vh, 6px) !important;
    line-height: 1.4 !important;
  }

  /* Slightly larger top margin for "Choose Your Path" */
  .services-choose-path {
    font-size: clamp(12px, 3vw, 14px) !important;
    margin-top: 12px !important;
    margin-bottom: 16px !important;
  }

  .services-process {
    margin-top: clamp(4px, 0.8vh, 6px) !important;
  }

  /* Services section: full screen */
  .services {
    padding: clamp(8px, 2vh, 16px) 0 !important;
    min-height: 100vh !important;
    min-height: -webkit-fill-available !important;
    height: 100vh !important;
    height: -webkit-fill-available !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
  }

  /* ====== CARDS LAYOUT ====== */
  /* 2 boven, 1 onder gecentreerd */
  .page2-section .services-process .services-process-cards {
    display: grid !important;
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 12px !important;
    width: 100% !important;
    margin: 0 !important;
    padding-inline: 0 !important;
  }

  .page2-section .services-process .services-process-card {
    width: 100% !important;
    padding: 12px !important;
    border-radius: 12px !important;
    display: grid !important;
    place-items: center !important;
  }

  /* 3e kaart gecentreerd onderaan */
  .page2-section .services-process .services-process-card:nth-child(3) {
    grid-column: 1 / -1 !important;   /* neemt beide kolommen in */
    width: min(320px, 80%) !important; /* maar niet te breed */
    justify-self: center !important;
  }

  .page2-section .services-process .services-process-card > :not(.card-hover-image) {
    margin: 0 !important;
    text-align: center !important;
  }

  /* ====== ICONS: vierkante bakjes ====== */
  .page2-section .services-process .services-process-icon-container {
    aspect-ratio: 1 / 1 !important;
    width: clamp(64px, 12vw, 96px) !important;
    height: auto !important;          /* bepaald door aspect-ratio */
    display: grid !important;
    place-items: center !important;
    margin-bottom: 4px !important;
    border-radius: 10px !important;
  }

  .page2-section .services-process .services-process-icon-container img {
    width: 70% !important;
    height: 70% !important;
    object-fit: contain !important;
  }

  /* ====== Typo-balans in card ====== */
  .services-process-card h3 {
    margin: 6px 0 2px 0 !important;
  }

  /* "click for request" iets hoger (minder bottom-weight) */
  .services-process-card .card-request-text {
    margin-top: 2px !important;
    margin-bottom: 0 !important;
    transform: translateY(-2px); /* subtiele optische lift */
  }

  /* Hover images disabled on mobile */
  .card-hover-image {
    display: none !important;
  }

  /* Contact section: full screen with aligned text width */
  .contact {
    padding-top: 24px !important;
    padding-bottom: 24px !important;
    padding-left: 0 !important;
    padding-right: 0 !important;
    min-height: 100vh !important;
    min-height: -webkit-fill-available !important;
    height: 100vh !important;
    height: -webkit-fill-available !important;
    display: flex !important;
    flex-direction: column !important;
    justify-content: center !important;
  }

  /* Reduce side padding for tighter alignment */
  .contact .container {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }

  /* Headings + text max width aligned */
  .contact h2,
  .contact p,
  .contact .contact-title,
  .contact .contact-title-line,
  .contact .contact-description {
    max-width: 100% !important;
    margin-left: 0 !important;
    margin-right: 0 !important;
  }

  .contact-header {
    margin-bottom: clamp(8px, 1.5vh, 12px) !important;
  }

  .contact-title {
    font-size: clamp(20px, 5vw, 28px) !important;
    margin-bottom: 4px !important;
  }

  .contact-title-line {
    margin-bottom: clamp(4px, 0.8vh, 8px) !important;
  }

  .contact-description {
    font-size: clamp(12px, 3vw, 14px) !important;
    margin-bottom: clamp(6px, 1.5vh, 10px) !important;
    line-height: 1.5 !important;
  }

  .contact-content {
    gap: clamp(12px, 2vh, 18px) !important;
  }

  .contact-item {
    margin-bottom: 8px !important;
  }

  .contact-item h4 {
    font-size: 10px !important;
    margin-bottom: 2px !important;
  }

  .contact-item p {
    font-size: clamp(10px, 2.2vw, 12px) !important;
  }

  input, textarea {
    padding: 8px 10px !important;
    font-size: 13px !important;
  }

  .submit-button {
    padding: 8px 14px !important;
    font-size: 13px !important;
  }

  /* Scroll indicator */
  .scroll-indicator {
    bottom: clamp(20px, 5vh, 40px) !important;
    font-size: clamp(10px, 2.5vw, 12px) !important;
    opacity: 1 !important;
    display: block !important;
  }

  /* Other mobile adjustments */
  .services-grid {
    grid-template-columns: 1fr;
  }

  :root {
    --logo-nudge: 0px;
  }
}

/* iOS-robust: start pas animeren zodra .hero-ready op <html> staat */
.hero-subtitle span{
  opacity: 0;
  display: inline-block;
  will-change: opacity, transform;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

/* één-voor-één met vertragingen */
.hero-ready .hero-subtitle .hero-word-1{
  animation: text-fade-in 600ms ease-out 0.6s both;
}

.hero-ready .hero-subtitle .hero-word-2{
  animation: text-fade-in 600ms ease-out 1.2s both;
}

.hero-ready .hero-subtitle .hero-word-3{
  animation: text-fade-in 600ms ease-out 1.8s both;
}

/* voorkom dat andere mobile rules dit overschrijven */
@media (max-width:640px){
  .hero-subtitle span{ 
    opacity:0 !important; 
    animation: none !important; /* Reset oude animaties */
  }
  .hero-ready .hero-subtitle .hero-word-1{
    animation: text-fade-in 600ms ease-out 0.6s both !important;
  }
  .hero-ready .hero-subtitle .hero-word-2{
    animation: text-fade-in 600ms ease-out 1.2s both !important;
  }
  .hero-ready .hero-subtitle .hero-word-3{
    animation: text-fade-in 600ms ease-out 1.8s both !important;
  }
}

