/* SAIL V2 · additive patch · 2026-08-17
 *
 * 1. Nav occlusion guard.
 *    The bottom nav is position:fixed, so at any scroll position it paints over
 *    whatever happens to sit in its band. The 96px body padding-bottom only
 *    clears the END of the document; it does nothing for content a person is
 *    looking at mid-scroll. Measured before this patch: the nav covered
 *    actionable controls at 1-2 of 8 scroll positions on all four surfaces, at
 *    both 1440x900 and 390x844 — including the primary CTA on mobile.
 *
 *    The nav now yields: it slides out while scrolling down, and returns when
 *    scrolling stops UNLESS returning would put it on top of an actionable
 *    control. Nothing else about its appearance changes.
 *
 * 2. Growth's lab switcher matched to the other three surfaces.
 *
 * Additive only. No app copy, no fixture, no honesty label, no SAMPLE banner
 * is touched by this file.
 */

/* The nav animates rather than blinking. transform+opacity only, so it never
   reflows the page underneath it. */
[data-sailv2-nav] {
  transition: transform .22s cubic-bezier(.4, 0, .2, 1), opacity .18s linear;
  will-change: transform, opacity;
}

/* Yielded state. translateY moves the real box off-screen, so the element's own
   bounding rect leaves the viewport — an overlap check reads true geometry
   rather than having to special-case a "hidden but still there" element. */
[data-sailv2-nav][data-sailv2-yield="1"] {
  transform: translateY(calc(100% + 28px)) !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* Someone who has asked for less motion gets the same protection without the
   slide. */
@media (prefers-reduced-motion: reduce) {
  [data-sailv2-nav] { transition: opacity .12s linear; }
}

/* 2 · Growth's lab fixture switcher ran full-bleed (x=16 w=1408) while Hub,
   Chart and Impact inset theirs to x=184 w=1072, because only Growth's sits
   outside the .sail-page column. Constraining it is a no-op on the three that
   are already 1072 wide.

   The :not(.cmp-module) is load-bearing, not defensive. Hub's Compass panel
   reuses .sail-lab-picker inside SECTION.cmp-module, which is a FLEX container —
   so `margin:auto` there makes the picker a shrink-to-fit flex item and it
   collapsed from 1072px to 921px, out of line with the content column. Measured,
   not guessed. Growth's picker sits in a block parent, where auto margins centre
   it as intended. */
:not(.cmp-module) > .sail-lab-picker {
  max-width: 1072px;
  margin-left: auto;
  margin-right: auto;
}
