/* A single motion language for the entire Pivlyn site. Everything is readable
   before enhancement, and every interaction retains its original hit area. */
@view-transition { navigation: auto; }

::view-transition-group(root) { animation-duration: .45s; }
::view-transition-old(root) { animation: pm-page-out .22s cubic-bezier(.4,0,1,1) both; }
::view-transition-new(root) { animation: pm-page-in .5s cubic-bezier(.2,.7,.2,1) both; }
.site-header { view-transition-name: pivlyn-navigation; }
::view-transition-group(pivlyn-navigation) { animation-duration: .4s; }
::view-transition-old(pivlyn-navigation),
::view-transition-new(pivlyn-navigation) { animation: none; mix-blend-mode: normal; }
::view-transition-new(pivlyn-navigation) { opacity: 1; }
::view-transition-old(pivlyn-navigation) { opacity: 0; }

@keyframes pm-page-out { to { opacity: 0; transform: translateY(-8px); } }
@keyframes pm-page-in { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } }
@keyframes pm-editorial-arrive { from { translate: 0 24px; opacity: .6; } to { translate: 0 0; opacity: 1; } }
@keyframes pm-section-arrive { from { translate: 0 34px; opacity: .65; } to { translate: 0 0; opacity: 1; } }
@keyframes pm-word-arrive {
  from { translate: 0 .28em; rotate: 2deg; opacity: .48; filter: blur(1px); }
  to { translate: 0 0; rotate: 0deg; opacity: 1; filter: blur(0); }
}
@keyframes pm-orbit-draw { from { clip-path: inset(0 100% 0 0); opacity: .2; } to { clip-path: inset(0); opacity: 1; } }
@keyframes pm-core-arrive { from { scale: .85; opacity: .4; } to { scale: 1; opacity: 1; } }
@keyframes pm-node-arrive {
  from { translate: var(--pm-node-x, 0px) var(--pm-node-y, 24px); scale: .92; opacity: .35; }
  to { translate: 0 0; scale: 1; opacity: 1; }
}

.pm-heading-accessible {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip-path: inset(50%) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
.pm-heading-visual { display: contents; color: inherit !important; }
.pm-word { display: inline-block; font: inherit; color: inherit; transform-origin: left bottom; }
.pm-type-line { position: relative; }
.pm-type-original { opacity: 1; }
.pm-type-ink { position: absolute; inset: 0; pointer-events: none; }
.st-hero-bottom .pm-type-ink { color: #f6f4ef; }
.pm-type-caret { display: inline-block; width: 1px; height: .9em; margin-left: 2px; background: currentColor; vertical-align: -.06em; }

.pm-reading-progress {
  position: fixed;
  z-index: 1001;
  inset: 0 0 auto;
  height: 2px;
  background: #f6f4ef;
  box-shadow: 0 0 8px #f6f4ef22;
  transform: scaleX(var(--pm-progress, 0));
  transform-origin: left;
  pointer-events: none;
  view-transition-name: pivlyn-progress;
}
.pm-reading-progress[hidden] { display: none; }
::view-transition-group(pivlyn-progress) { animation: none; }
::view-transition-old(pivlyn-progress),
::view-transition-new(pivlyn-progress) { animation: none; }

/* Light stays in the art; body copy and financial data are never washed out. */
.pm-light-surface { position: relative; isolation: isolate; }
.pm-surface-light {
  position: absolute;
  z-index: 2;
  inset: 0;
  border-radius: inherit;
  background: radial-gradient(360px circle at var(--pm-pointer-x, 50%) var(--pm-pointer-y, 50%), #ffffff0d, transparent 65%);
  opacity: 0;
  pointer-events: none;
  transition: opacity .4s ease;
}
@media (hover: hover) and (pointer: fine) {
  .pm-light-surface.pm-pointer-active > .pm-surface-light { opacity: 1; }
}

@media (prefers-reduced-motion: no-preference) {
  /* Replace the single group slide with spaced editorial entrances. The hero
     artwork itself keeps its existing studio.js scroll implementation. */
  .pivlyn-motion .st-hero-inner { animation: none; }
  .pivlyn-motion .pm-arrive {
    animation: pm-editorial-arrive .95s cubic-bezier(.16,1,.3,1) both;
    animation-delay: var(--pm-delay, 0ms);
  }
  .pivlyn-motion .pm-word {
    animation: pm-word-arrive 1.1s cubic-bezier(.16,1,.3,1) both;
    animation-delay: var(--pm-word-delay, 0ms);
  }
  .pivlyn-motion .fx-system-orbit {
    animation: pm-orbit-draw 1.6s cubic-bezier(.16,1,.3,1) both;
    animation-delay: .15s;
  }
  .pivlyn-motion .fx-orbit-two { animation-delay: .3s; }
  .pivlyn-motion .fx-system-core { animation: pm-core-arrive 1.2s cubic-bezier(.16,1,.3,1) both; }
  .pivlyn-motion .fx-system-node {
    animation: pm-node-arrive 1.25s cubic-bezier(.16,1,.3,1) both;
    animation-delay: calc(var(--fx-delay, 0s) + .12s);
  }
  .fx-node-1 { --pm-node-x: 30px; --pm-node-y: 30px; }
  .fx-node-2 { --pm-node-x: -30px; --pm-node-y: 20px; }
  .fx-node-3 { --pm-node-x: 25px; --pm-node-y: -25px; }
  .fx-node-4 { --pm-node-x: -30px; --pm-node-y: -30px; }
  .pivlyn-motion .fx-hero-rule { animation: pm-orbit-draw 1.3s cubic-bezier(.16,1,.3,1) .4s both; }
  .pivlyn-motion .pm-reveal.pm-in-view {
    animation: pm-section-arrive .85s cubic-bezier(.16,1,.3,1) both;
    animation-delay: var(--pm-delay, 0ms);
  }
  .pivlyn-motion .pm-arrive:focus-within,
  .pivlyn-motion .pm-reveal:focus-within { animation: none; }
  .pivlyn-motion :is(.st-link,.text-arrow,.nav-beta,.launch-cta,.button,.st-button) > svg {
    transition: translate .3s cubic-bezier(.16,1,.3,1);
  }
  .pivlyn-motion :is(.st-link,.text-arrow,.nav-beta,.launch-cta,.button,.st-button):is(:hover,:focus-visible) > svg {
    translate: 3px 0;
  }
}

@media (min-width: 900px) and (prefers-reduced-motion: no-preference) {
  .pm-art-frame { overflow: clip; }
  img.pm-parallax {
    transform: translate3d(0, var(--pm-art-offset, 0px), 0) scale(var(--pm-art-scale, 1.055));
    transform-origin: center;
  }
  img.pm-parallax[data-motion-active] { will-change: transform; }
  .pm-scroll-scene {
    scale: var(--pm-scene-scale, 1);
    rotate: var(--pm-scene-turn, 0deg);
    translate: 0 var(--pm-scene-depth, 0px);
  }
}

@media (prefers-reduced-motion: reduce) {
  @view-transition { navigation: none; }
  ::view-transition-group(*),
  ::view-transition-old(*),
  ::view-transition-new(*) { animation: none !important; }
  .pivlyn-motion *, .pivlyn-motion *::before, .pivlyn-motion *::after {
    animation: none !important;
    transition: none !important;
    scroll-behavior: auto !important;
  }
  .pm-parallax { transform: none !important; }
  .pm-scroll-scene, .pm-word { scale: 1 !important; rotate: 0deg !important; translate: none !important; }
  .pm-type-original { opacity: 1 !important; }
  .pm-type-ink { display: none; }
  .pm-surface-light { display: none; }
}

@media print {
  .pm-reading-progress, .pm-surface-light { display: none !important; }
  .pm-parallax { transform: none !important; }
  .pm-arrive, .pm-reveal { animation: none !important; }
  .pm-scroll-scene { scale: 1 !important; rotate: 0deg !important; translate: none !important; }
  .pm-type-original { opacity: 1 !important; }
  .pm-type-ink { display: none; }
}

/* A shared motion cadence: copy enters from the side, cards rise in sequence.
   Resting content is always visible, even without JavaScript or observers. */
@keyframes pm-section-arrive{from{opacity:.55;transform:translate3d(var(--pm-enter-x,0px),var(--pm-enter-y,24px),0)}to{opacity:1;transform:translate3d(0,0,0)}}
@media(prefers-reduced-motion:no-preference){
  .pm-from-left{--pm-enter-x:-22px;--pm-enter-y:10px}
  .pm-from-right{--pm-enter-x:22px;--pm-enter-y:10px}
  .pivlyn-motion .pm-reveal.pm-in-view{animation-timing-function:cubic-bezier(.16,1,.3,1);animation-duration:.9s}
  .pl-pillar-grid article,.pl-capability-grid article,.st-resource,.st-trust-grid article{transition:translate .35s cubic-bezier(.2,.8,.2,1),border-color .25s,box-shadow .35s}
  .pl-filter button,.pl-recurring-total button{transition:background .2s,color .2s,border-color .2s}
  .pl-pillar-grid a svg,.pl-capability-grid a svg,.st-resource svg{transition:translate .25s}
  .pl-pillar-grid a:is(:hover,:focus-visible) svg,.pl-capability-grid a:is(:hover,:focus-visible) svg{translate:4px 0}
  .pl-hero-topics a{position:relative;transition:color .25s}
  .pl-hero-topics a:after{content:'';position:absolute;bottom:5px;left:0;right:0;height:1px;background:currentColor;scale:0 1;transform-origin:left;transition:scale .3s}
  .pl-hero-topics a:is(:hover,:focus-visible):after{scale:1 1}
}
@media(hover:hover) and (pointer:fine) and (prefers-reduced-motion:no-preference){
  .pl-capability-grid article:hover,.st-resource:hover{translate:0 -4px;box-shadow:0 14px 35px #16220e0d}
  .pl-pillar-grid article:hover .pl-pillar-top>span{background:#e1e7d9;border-color:#8b9b7c}
}
@media(max-width:760px){.pm-from-left,.pm-from-right{--pm-enter-x:0px;--pm-enter-y:16px}}
@media(prefers-reduced-motion:reduce){.pl-architecture:before,.pl-horizon{translate:none!important;will-change:auto}.pm-reading-progress{display:none}}
