/* ============================================================================
   GGV – einheitliche Button-Bewegung ("souveräner" Hover).

   Eine gemeinsame Sprache für ALLE Buttons der Seite: sanftes Anheben beim
   Hover + weicher, neutraler Schatten + taktiler Press-State, überall mit
   demselben Easing/Timing. Die FARBEN bzw. Tiers (primary = gefüllt,
   secondary = Outline/Ghost) bleiben bewusst pro Seite inline definiert –
   hier wird nur die Art der Bewegung vereinheitlicht.

   Wird in jeder Seite NACH dem Inline-<style> eingebunden, damit diese
   Bewegung die bisherigen, uneinheitlichen Hover-Transforms (mal -1px, mal
   nur Farbe, mal Schatten) ersetzt. Kein Build-Step – reine statische Datei,
   analog zu assets/js/projects.js.
   ============================================================================ */

/* Grund-Transition: schliesst transform + box-shadow ein, damit der Hover
   weich animiert (bisher animierten einige Buttons nur die Farbe). */
.cta,
.all-projects-link,
.contact-trigger,
.slider-btn,
.modal-panel button[type="submit"],
.submit,
.modal-btn,
.filter-pill,
.admin-btn,
.btn-klein,
.upload-flaeche,
.mr-display,
.mr-mehr {
  transition: background-color .2s ease,
              color .2s ease,
              border-color .2s ease,
              transform .22s cubic-bezier(.2, .7, .2, 1),
              box-shadow .22s cubic-bezier(.2, .7, .2, 1);
}

/* Hover: minimal anheben + weicher Schatten – gleiche "Art" für jeden Tier/jede
   Farbe. Bewusst zurückhaltend (Kundenwunsch 24.09.2026: vorher 2px und ein
   kräftiger Schatten, wirkte zu stark). */
.cta:hover,
.all-projects-link:hover,
.contact-trigger:hover,
.modal-btn:hover,
.modal-btn.primary:hover,
.filter-pill:hover,
.slider-btn:hover:not(:disabled),
.submit:hover:not(:disabled),
.modal-panel button[type="submit"]:hover:not(:disabled),
.admin-btn:hover,
.btn-klein:hover,
.upload-flaeche:hover,
.mr-display:hover,
.mr-mehr:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 14px -8px rgba(15, 40, 60, .24);
}

/* Aktiv/gedrückt: zurück auf 0 mit flacherem Schatten – souveränes, taktiles
   Feedback statt "klebrigem" Hover-Zustand. */
.cta:active,
.all-projects-link:active,
.contact-trigger:active,
.modal-btn:active,
.modal-btn.primary:active,
.filter-pill:active,
.slider-btn:active:not(:disabled),
.submit:active:not(:disabled),
.modal-panel button[type="submit"]:active:not(:disabled),
.admin-btn:active,
.btn-klein:active,
.upload-flaeche:active,
.mr-display:active,
.mr-mehr:active {
  transform: translateY(0);
  box-shadow: 0 3px 10px -6px rgba(15, 40, 60, .4);
}

/* Bewegungsreduktion respektieren: kein Anheben/Schatten-Sprung. */
@media (prefers-reduced-motion: reduce) {
  .cta,
  .all-projects-link,
  .contact-trigger,
  .slider-btn,
    .modal-panel button[type="submit"],
  .submit,
  .modal-btn,
  .filter-pill,
  .admin-btn,
  .btn-klein,
  .upload-flaeche,
  .mr-display,
  .mr-mehr {
    transition: background-color .2s ease, color .2s ease, border-color .2s ease;
  }
  .cta:hover,
  .all-projects-link:hover,
  .contact-trigger:hover,
    .modal-btn:hover,
  .modal-btn.primary:hover,
  .filter-pill:hover,
  .slider-btn:hover:not(:disabled),
  .submit:hover:not(:disabled),
  .modal-panel button[type="submit"]:hover:not(:disabled),
  .admin-btn:hover,
  .btn-klein:hover,
  .upload-flaeche:hover,
  .mr-display:hover,
  .mr-mehr:hover {
    transform: none;
  }
}
