/* ══════════════════════════════════════════════════════════════════════════════════════════════
   pn-team-motion — companion sheet to assets/js/pn-team-motion.js.

   Pairs with pn-scroll-reveal-20260927.css (which already rises+fades each Team-hub roster card
   via .pn-sr-card/.is-inview). This sheet adds ONE thing on top of that same flip: the portrait
   itself gets a slight scale-in, so "portraits rise and fade in with a slight scale" is true on
   the Team hub too, not just the three surfaces pn-team-motion.js animates directly. One motion
   event per card (the SAME .is-inview flip), not a second competing animation.

   ⛔ SAFE-BY-DEFAULT, same contract as pn-scroll-reveal-20260927.css: scoped to
   html.pn-reveal-on (only pn-scroll-reveal.js ever sets that class), so with no JS / no
   IntersectionObserver / reduced-motion, every portrait is exactly as visible as it is today.
   Loaded AFTER pn-scroll-reveal-20260927.css so this narrow addition is never outranked by it.
   ══════════════════════════════════════════════════════════════════════════════════════════════ */

html.pn-reveal-on:not(#pn-ds-never) body .hub-view[data-view="v-hires"] .pn-sr-card:not(.is-inview) .tt-mug{
  transform: scale(.92);
}
html.pn-reveal-on:not(#pn-ds-never) body .hub-view[data-view="v-hires"] .pn-sr-card .tt-mug{
  transform-origin: center;
  transition: transform .5s cubic-bezier(.19,1,.22,1);
}
html.pn-reveal-on:not(#pn-ds-never) body .hub-view[data-view="v-hires"] .pn-sr-card.is-inview .tt-mug{
  transform: scale(1);
}

/* ── the three surfaces pn-team-motion.js animates directly (inline styles) get no CSS entrance
   rules of their own — they are progressive-enhancement-by-JS, so with JS present but before it
   runs there is a one-frame "hidden" inline style; this floor guarantees that frame is never
   visible longer than a paint even if a script error interrupts the sequence early. ── */
.ts-chip, .pnj-mate, #ttOverlay .tt-card{
  /* nothing to declare at rest — the JS-authored inline opacity/transform IS the only state this
     sheet needs to know about, and it always resolves to "" (the authored default) on completion
     or on the watchdog. This rule exists so the file documents the contract, not to set anything. */
}

@media (prefers-reduced-motion: reduce){
  html.pn-reveal-on:not(#pn-ds-never) body .hub-view[data-view="v-hires"] .pn-sr-card:not(.is-inview) .tt-mug,
  html.pn-reveal-on:not(#pn-ds-never) body .hub-view[data-view="v-hires"] .pn-sr-card.is-inview .tt-mug{
    transform: none !important;
    transition: none !important;
  }
}
