/* Throughput Journal - motion + layout corrections */

/* --- layout corrections (carried over from sister titles) --- */
.article__body > table,
.article__body > figure.wp-block-table{max-width:var(--measure)!important;margin-inline:auto!important}
.article__body > figure.wp-block-table > table{width:100%}
.article__body > figure.wp-block-image:not(.alignwide):not(.alignfull){max-width:var(--measure)!important;margin-inline:auto!important}

/* --- reading progress --- */
.tj-progress{position:fixed;top:0;left:0;height:2px;width:100%;z-index:900;background:var(--accent);transform:scaleX(0);transform-origin:0 50%;will-change:transform;pointer-events:none}

/* --- scroll reveal --- */
@media (prefers-reduced-motion: no-preference){
  /* Reveal rules are gated on .js-motion (added to <html> by the head script).
     With JS off the class is absent, these never match, and text stays visible. */
  .js-motion .tj-rise{opacity:0;transform:translate3d(0,18px,0);transition:opacity .6s cubic-bezier(.22,.61,.36,1),transform .6s cubic-bezier(.22,.61,.36,1)}
  .js-motion .tj-rise.is-in{opacity:1;transform:none}
  .js-motion .tj-stagger > *{opacity:0;transform:translate3d(0,14px,0);transition:opacity .5s cubic-bezier(.22,.61,.36,1),transform .5s cubic-bezier(.22,.61,.36,1)}
  .js-motion .tj-stagger.is-in > *{opacity:1;transform:none}
  .js-motion .tj-stagger.is-in > *:nth-child(2){transition-delay:.05s}
  .js-motion .tj-stagger.is-in > *:nth-child(3){transition-delay:.1s}
  .js-motion .tj-stagger.is-in > *:nth-child(4){transition-delay:.15s}
  .js-motion .tj-stagger.is-in > *:nth-child(5){transition-delay:.2s}
  .js-motion .tj-stagger.is-in > *:nth-child(n+6){transition-delay:.25s}
  .tj-par{overflow:hidden}
  .tj-par img{transform:translate3d(0,var(--tj-y,0px),0) scale(1.08);will-change:transform}
  .tj-progress{transition:transform .1s linear}
}
@media (prefers-reduced-motion: reduce){
  .tj-rise,.tj-stagger > *{opacity:1!important;transform:none!important}
}