*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { font-family: 'Avenir Next', 'Avenir', system-ui, sans-serif; -webkit-font-smoothing: antialiased; }

.reveal {
  opacity: 0; transform: translateY(32px);
  transition: opacity 0.7s cubic-bezier(0.22,1,0.36,1), transform 0.7s cubic-bezier(0.22,1,0.36,1);
}
.reveal.visible { opacity: 1; transform: translateY(0); }
.reveal-left {
  opacity: 0; transform: translateX(-40px);
  transition: opacity 0.7s cubic-bezier(0.22,1,0.36,1), transform 0.7s cubic-bezier(0.22,1,0.36,1);
}
.reveal-left.visible { opacity: 1; transform: translateX(0); }
.reveal-right {
  opacity: 0; transform: translateX(40px);
  transition: opacity 0.7s cubic-bezier(0.22,1,0.36,1), transform 0.7s cubic-bezier(0.22,1,0.36,1);
}
.reveal-right.visible { opacity: 1; transform: translateX(0); }

.hero-grid-bg {
  background-image:
    linear-gradient(rgba(10,40,84,0.035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(10,40,84,0.035) 1px, transparent 1px);
  background-size: 64px 64px;
  animation: gridShift 35s linear infinite;
}
@keyframes gridShift { 0%{background-position:0 0} 100%{background-position:64px 64px} }

@keyframes pulseGlow { 0%,100%{opacity:.45;transform:scale(1)} 50%{opacity:.75;transform:scale(1.04)} }
.glow-orb { animation: pulseGlow 7s ease-in-out infinite; }
.glow-orb-2 { animation: pulseGlow 9s ease-in-out infinite 2.5s; }

.gradient-text {
  background: linear-gradient(135deg, #081f47 0%, #0b2d64 45%, #4e71b2 100%);
  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;
}

@keyframes float { 0%,100%{transform:translateY(0) rotate(0deg)} 33%{transform:translateY(-10px) rotate(.5deg)} 66%{transform:translateY(5px) rotate(-.5deg)} }
.float { animation: float 9s ease-in-out infinite; }

.service-card {
  transition: transform .35s cubic-bezier(.22,1,.36,1), box-shadow .35s cubic-bezier(.22,1,.36,1), border-color .35s ease;
}
.service-card:hover { transform: translateY(-4px); box-shadow: 0 24px 48px rgba(7,27,58,.11); border-color: rgba(11,45,100,.25); }

.line-accent::before {
  content:''; position:absolute; left:0; top:0; width:3px; height:100%;
  background: linear-gradient(180deg,#0b2d64,#4e71b2); border-radius:3px;
}

::-webkit-scrollbar { width: 7px; }
::-webkit-scrollbar-track { background: #eef1f8; }
::-webkit-scrollbar-thumb { background: rgba(10,40,84,.18); border-radius: 99px; }
::-webkit-scrollbar-thumb:hover { background: rgba(10,40,84,.3); }

@keyframes mapPulse { 0%,100%{box-shadow:0 0 0 0 rgba(11,45,100,.5)} 50%{box-shadow:0 0 0 8px rgba(11,45,100,0)} }
.map-dot { animation: mapPulse 2.5s ease-in-out infinite; }

@keyframes certScroll { 0%{transform:translate3d(0,0,0)} 100%{transform:translate3d(-50%,0,0)} }
/* w-max: Breite = Inhalt, sonst ist -50% vom Viewport (Carousel bricht) */
.animate-scroll {
  animation: certScroll 45s linear infinite;
  -webkit-animation: certScroll 45s linear infinite;
}
.animate-scroll:hover { animation-play-state: paused; -webkit-animation-play-state: paused; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
  /* Horizontale Carousels weiterlaufen (langsamer), sonst „steht“ alles auf dem Mac */
  .animate-scroll {
    animation: certScroll 85s linear infinite !important;
    -webkit-animation: certScroll 85s linear infinite !important;
  }
}
