/* =====================================================================
   PSL — Cross-page sizing consistency
   Matches the calibrated scale of the Minimal home page.

   Each page renders DIRECTLY (no design-canvas frame), so it is naturally
   full-width and responsive.

   IMPORTANT: these pages reveal content with IntersectionObserver +
   opacity-gated CSS. CSS `zoom` applied ON or ABOVE an observed element
   corrupts the observer geometry, so we scale the INNER content wrapper of
   each section (which the observer does NOT watch) — never the <section>.
   A reveal safety-net then guarantees content can never be stuck hidden.
   ===================================================================== */

/* ---- Content: scale the inner container, not the observed <section> ---- */
.psl-method   > section .m-container,
.psl-teams    > section .m-container,
.psl-i        .i-container,
.psl-insights > section .i-container,
.psl-page:not(.hr-min) > section .container {
  zoom: 0.96;
}

/* Method: the Performance System block and the Origins cards run large —
   trim them a little more than the rest of the page. */
.psl-method .m-system .m-container { zoom: 0.86; }
.psl-method .m-origins-grid        { zoom: 0.9; }

/* ---- Section vertical rhythm: light trim (content is full-size now) ---- */
.psl-method .m-section            { padding-top: 72px !important; padding-bottom: 72px !important; }
.psl-method .m-cta                { padding-top: 76px !important; padding-bottom: 76px !important; }
.psl-method .m-insight,
.psl-method .m-insight-v5,
.psl-method .m-journey,
.psl-method .m-origins            { padding-top: 72px !important; padding-bottom: 72px !important; }
.psl-method .m-hero,
.psl-method .m-hero-v5            { padding-top: 104px !important; padding-bottom: 72px !important; }

.psl-i .i-section                 { padding-top: 72px !important; padding-bottom: 72px !important; }
.psl-i .i-section.i-compact       { padding-top: 30px !important; padding-bottom: 30px !important; }
.psl-i .i-hero                    { padding-top: 120px !important; padding-bottom: 84px !important; }

.psl-insights .i-section,
.psl-insights .i-featured-section,
.psl-insights .i-grid-section     { padding-top: 64px !important; padding-bottom: 64px !important; }
.psl-insights .i-hero             { padding-top: 80px !important; padding-bottom: 60px !important; }
.psl-insights .i-cta,
.psl-insights .i-section--c       { padding-top: 76px !important; padding-bottom: 76px !important; }

.psl-page:not(.hr-min) .section            { padding-top: 68px !important; padding-bottom: 68px !important; }
.psl-page:not(.hr-min) .section.hero-section { padding-top: 88px !important; padding-bottom: 56px !important; }

/* ---- Footers: legible, in proportion with the larger content ---- */
.psl-method   .psl-footer,
.psl-teams    .psl-footer,
.psl-i        .psl-footer,
.psl-insights .psl-footer,
.psl-page:not(.hr-min) .psl-footer {
  zoom: 0.9;
}

/* Direct-render pages: white body so no canvas-grey shows in any margin. */
body.psl-direct { background: #FFFFFF; }

/* ---- Reveal safety net --------------------------------------------------
   The IntersectionObserver does not fire reliably in a backgrounded tab,
   and the reveal transition can freeze at opacity:0 — either can leave
   sections invisible. On these direct-render sub-pages we pin all reveal-
   animated content visible. (The home page keeps its scroll-entrance
   animations; sub-pages prioritise guaranteed legibility.)
   ------------------------------------------------------------------------- */
.psl-method-v5 .m-anim-fade,
.psl-method-v5 .m-anim-fadeup,
.psl-teams [class*="t-anim"],
.psl-i [class*="i-fadeup"],
.psl-i [class*="i-anim"],
.psl-insights [class*="i-anim"],
.psl-insights [class*="i-fadeup"],
.psl-method .psl-reveal,
.psl-teams .psl-reveal,
.psl-page:not(.hr-min) .psl-reveal {
  opacity: 1 !important;
  transform: none !important;
}

/* Method step-strip: pin its slide-in to the resting position so it can't
   freeze behind the nav in a throttled tab. */
.psl-method .m-strip.is-on { transform: none !important; }
