/* =========================================================
   PRISMSTONE SHARED MOTION SYSTEM
   Progressive enhancement: content stays visible without JS.
========================================================= */
:root {
  --psAnim-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --psAnim-fast: 420ms;
  --psAnim-base: 680ms;
  --psAnim-slow: 880ms;
  --psAnim-distance: 28px;
}

html.psAnim-ready .psAnim-reveal {
  opacity: 0;
  transform: translate3d(0, var(--psAnim-distance), 0);
  transition:
    opacity var(--psAnim-base) var(--psAnim-ease),
    transform var(--psAnim-base) var(--psAnim-ease),
    filter var(--psAnim-base) var(--psAnim-ease);
  transition-delay: var(--psAnim-delay, 0ms);
  will-change: opacity, transform;
}

html.psAnim-ready .psAnim-fadeDown { transform: translate3d(0, -22px, 0); }
html.psAnim-ready .psAnim-fadeLeft { transform: translate3d(-34px, 0, 0); }
html.psAnim-ready .psAnim-fadeRight { transform: translate3d(34px, 0, 0); }
html.psAnim-ready .psAnim-scaleIn { transform: scale(.965); filter: blur(2px); }
html.psAnim-ready .psAnim-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
  filter: none;
  will-change: auto;
}

.psAnim-card {
  transition:
    transform 360ms var(--psAnim-ease),
    box-shadow 360ms var(--psAnim-ease),
    border-color 360ms var(--psAnim-ease),
    background-color 360ms var(--psAnim-ease);
}
.psAnim-card:hover { transform: translateY(-5px); }
.psAnim-card img,
.psAnim-card svg,
.psAnim-card i {
  transition: transform 360ms var(--psAnim-ease);
}
.psAnim-card:hover img,
.psAnim-card:hover svg,
.psAnim-card:hover i { transform: scale(1.055); }

.psAnim-button,
.psAnim-button i,
.psAnim-button svg {
  transition:
    transform 300ms var(--psAnim-ease),
    box-shadow 300ms var(--psAnim-ease),
    color 300ms ease,
    background-color 300ms ease,
    border-color 300ms ease;
}
.psAnim-button:hover { transform: translateY(-2px); }
.psAnim-button:hover i,
.psAnim-button:hover svg { transform: translateX(3px); }
.psAnim-button:active { transform: translateY(0) scale(.985); }

.psAnim-button:focus-visible,
.psAnim-link:focus-visible,
button:focus-visible,
a:focus-visible,
input:focus-visible,
textarea:focus-visible,
select:focus-visible {
  outline: 3px solid rgba(92, 86, 238, .28);
  outline-offset: 3px;
}

/* Header/footer loaded asynchronously */
#top-nav.psAnim-shell-enter,
#main-footer.psAnim-shell-enter {
  animation: psAnimShellEnter 720ms var(--psAnim-ease) both;
}
@keyframes psAnimShellEnter {
  from { opacity: 0; transform: translateY(-16px); }
  to { opacity: 1; transform: translateY(0); }
}
#main-footer.psAnim-shell-enter { animation-name: psAnimFooterEnter; }
@keyframes psAnimFooterEnter {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}

.psAnim-header-scrolled > * {
  box-shadow: 0 12px 34px rgba(7, 45, 99, .10);
  transition: box-shadow 320ms ease, background-color 320ms ease;
}

/* Small decorative motion */
.psAnim-float { animation: psAnimFloat 5.5s ease-in-out infinite; }
.psAnim-floatSlow { animation: psAnimFloat 7.5s ease-in-out infinite reverse; }
.psAnim-breathe { animation: psAnimBreathe 6.5s ease-in-out infinite; }
@keyframes psAnimFloat {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50% { transform: translate3d(0, -8px, 0); }
}
@keyframes psAnimBreathe {
  0%, 100% { transform: scale(1); opacity: .92; }
  50% { transform: scale(1.025); opacity: 1; }
}

/* Dynamic job rendering */
.psjobs91-jobCard.psAnim-job-enter {
  animation: psAnimJobEnter 620ms var(--psAnim-ease) both;
  animation-delay: var(--psAnim-delay, 0ms);
}
@keyframes psAnimJobEnter {
  from { opacity: 0; transform: translateY(22px) scale(.99); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
.psjobs91-list.psAnim-switching { opacity: .25; transform: translateY(6px); }
.psjobs91-list { transition: opacity 180ms ease, transform 180ms ease; }

/* Popup / chat / toast transitions without changing existing logic */
.psjobs91-modal,
.psjobs91-popup,
.pscontact91-chatPopup,
.pscontact91-toast {
  transition: opacity 300ms ease, visibility 300ms ease, transform 360ms var(--psAnim-ease);
}
.psjobs91-modalContent,
.psjobs91-popupContent,
.pscontact91-chatPopup > * {
  transition: transform 360ms var(--psAnim-ease), opacity 300ms ease;
}

/* Form interactions */
.pscontact91-formCard input,
.pscontact91-formCard textarea,
.pscontact91-formCard select {
  transition: border-color 260ms ease, box-shadow 260ms ease, transform 260ms ease, background-color 260ms ease;
}
.pscontact91-formCard input:focus,
.pscontact91-formCard textarea:focus,
.pscontact91-formCard select:focus {
  transform: translateY(-1px);
  box-shadow: 0 10px 25px rgba(6, 38, 90, .07);
}

/* FAQ icon and answer */
.pscontact91-faqQuestion i,
.pscontact91-faqQuestion svg {
  transition: transform 340ms var(--psAnim-ease);
}
.pscontact91-faqItem--active .pscontact91-faqQuestion i,
.pscontact91-faqItem--active .pscontact91-faqQuestion svg { transform: rotate(45deg); }
.pscontact91-faqAnswer {
  transition: max-height 420ms var(--psAnim-ease), opacity 320ms ease, transform 420ms var(--psAnim-ease);
}

/* Slider content settles softly after track movement */
.psTesti91-track,
.psjobs91-companyTrack { transition-timing-function: var(--psAnim-ease) !important; }
.psTesti91-card { transition: transform 340ms var(--psAnim-ease), box-shadow 340ms ease, opacity 340ms ease; }
.psTesti91-card:hover { transform: translateY(-4px); }

@media (max-width: 767px) {
  :root { --psAnim-distance: 16px; --psAnim-base: 540ms; }
  html.psAnim-ready .psAnim-fadeLeft,
  html.psAnim-ready .psAnim-fadeRight { transform: translate3d(0, 16px, 0); }
  .psAnim-float, .psAnim-floatSlow, .psAnim-breathe { animation: none; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  html.psAnim-ready .psAnim-reveal,
  html.psAnim-ready .psAnim-fadeDown,
  html.psAnim-ready .psAnim-fadeLeft,
  html.psAnim-ready .psAnim-fadeRight,
  html.psAnim-ready .psAnim-scaleIn {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
  }
}
