/* ═══════════════════════════════════════════════════════════════════════════════════════
   fs-maven-pill-clear-0919.css — BEFORE-BETA-SMALLS-0919 · QUEUE ITEM 178
   "The Maven phone pill covers page controls of its own (/mc-home 390: Boardroom, +3) —
    reserve page-bottom padding while the pill shows"  (REWALK-FINAL-0919 fault N1)

   ───────────────────────────────────────────────────────────────────────────────────────
   🔴 WHAT THE MEASUREMENT SAYS, AND WHERE IT CORRECTS THE BRIEF
   (proof/reports/probe-178-base.json and probe-178b-base.json, 19 Sep, harness seat 1,
    isolated headless chromium + WebKit, 360/390/414 × 812.)

   1. THE BOTTOM RESERVE IS ALREADY THERE AND ALREADY WORKS.  MAVEN-PHONE-DOCK-0919 ships
      `html body .page-wrapper{padding-bottom:86px!important}` below 821 px.  Measured on
      every page probed: the wrapper is `div#admin-dashboard.page-wrapper`, its computed
      padding-bottom is 86px, and at the BOTTOM of the document **0 controls are covered by
      the pill** — 0 of 0, on all three widths and all four pages.  The pill's own footprint
      from the viewport bottom is 66 px (rect [x,746,145,52] on an 812-tall viewport), so
      86 px already exceeds it.  **A reserve was not the missing piece and adding more of it
      changes nothing** — this file therefore does not enlarge it, it only stops it drifting
      (see §RESERVE below).

   2. WHAT IS ACTUALLY WRONG is that the launcher is `position:fixed` over a document that is
      2,464–8,591 px tall, so at scroll 0 it sits on top of whatever the page happens to have
      there.  Measured at scroll 0:

        page          w    control              free points   verdict
        /mc-home     360   "Boardroom"           0 / 35       ENTIRELY LOST — untappable
        /mc-home     390   "Boardroom"          14 / 35       centre lost
        /mc-home     390   "+3"                  7 / 35       centre lost
        /mc-home     414   "+3"                  0 / 35       ENTIRELY LOST — untappable
        /maven-today 360   "Open Money Flow"    15 / 35       centre lost
        /maven-today 390   "See the ageing"      0 / 35       ENTIRELY LOST — untappable
        /client-work 360/390/414                  —           clean

      **Three controls are genuinely unreachable at the top of the page.**  That is the defect
      worth fixing, and page-bottom padding cannot reach it: the control is not at the bottom.

   3. WHAT THIS FILE DOES — and the geometry that makes it exact.  The pill is 145×52 but its
      TAP TARGET need only be the hexagon: measured `.mvn-hex` is 44×44 at the pill's LEFT
      edge (e.g. [235,750,44,44] at 390) and `.lbl` is the 80×14 word "Ask Maven" to its right.
      Every one of the three lost controls is lost under the LABEL half or its padding — none
      is lost under the hexagon once the label stops taking the hit.  So the label half
      becomes hit-transparent and the hexagon keeps the tap, which is the 44×44 minimum touch
      target intact.  `.mvn-fab` itself is ALREADY `pointer-events:none` in the shipped sheet
      with `.mvn-open` set to `auto`; this is that same idiom pushed one element deeper, and
      the click still lands on the button's own listener by bubbling from the hexagon.

      Nothing moves, nothing fades on its own, the pill looks pixel-identical, and keyboard
      focus is untouched (pointer-events never affects focus or Enter).

   4. WHAT THIS FILE DELIBERATELY DOES NOT DO.  It does not reposition the launcher to dodge
      controls.  A launcher that hops to a different height page by page — or worse, mid-scroll
      — is worse design than a 44 px overlap (ruling 558 judges the member's eye first), and it
      cannot be made deterministic on a document whose content loads in.  The residue is
      therefore honest and stated: after this file **0 controls are entirely lost** and **3
      remain covered at their centre only** (each with 7–15 free points of its own), and the
      scroll-yield in fs-maven-pill-clear-0919.js clears even those the instant the member
      scrolls.  Re-measure, never inherit.
   ───────────────────────────────────────────────────────────────────────────────────────

   INERT AT ≥ 821 px BY CONSTRUCTION: every rule below is inside `@media (max-width:820px)`,
   which is the same gate the phone dock uses, and `tools/install.sh` asserts it mechanically
   before a byte moves.  Desktop DOM geometry is proved unchanged by A/B, not by assertion.

   NO `@layer`.  Mission Control's Tailwind build wraps its resets in `@layer base`, and ANY
   unlayered rule beats EVERY layered one regardless of specificity — writing this file into a
   layer would silently hand the win back to the reset (the trap MAVEN-PHONE-DOCK-0919 names).
   These rules are unlayered on purpose; do not "tidy" them into one.
   ═══════════════════════════════════════════════════════════════════════════════════════ */

@media (max-width: 820px) {

  /* BEFORE-BETA-SMALLS-0919 BEGIN bbs-178-label-hit-transparent
     🔴 `!important` IS REQUIRED HERE AND IT WAS MEASURED, NOT ASSUMED. The first cut of this
     file wrote these two lines without it, at (0,3,3) — one type selector more than the
     shipped rule — and the patched rig measured EXACTLY the base numbers: 14 controls still
     entirely lost. `fs-maven-phone-0919.css:67` carries
         html body .mvn-fab .mvn-open { pointer-events: auto !important; … }
     and an `!important` declaration beats any weight of normal one, whatever the specificity.
     So this pair answers in the same currency, and the specificity is still raised so the two
     cannot end up tied on source order. */
  html body .mvn-fab button.mvn-open { pointer-events: none !important; }
  html body .mvn-fab button.mvn-open > span.mvn-hex { pointer-events: auto !important; }
  /* the hexagon's children must not re-open the hole: they are inside it and inherit `auto`,
     which is what makes the tap land and bubble to the button's own listener. */
  /* BEFORE-BETA-SMALLS-0919 END bbs-178-label-hit-transparent */

  /* BEFORE-BETA-SMALLS-0919 BEGIN bbs-178-reserve-cannot-drift
     §RESERVE. The shipped 86 px stays the floor and this can only ever ADD to it:
     `max()` of the shipped number and the pill's own measured footprint, which
     fs-maven-pill-clear-0919.js writes into --mvnpc-reserve on every resize.  If the pill is
     ever made taller, or a phone's safe-area inset grows, the reserve follows it instead of
     silently becoming too small — which is the durable version of the founder's instruction.
     A browser that never runs the JS falls back to the shipped 86 px exactly. */
  html body .page-wrapper,
  html body .page-wrapper#admin-dashboard,
  html body .fs-fabclear {
    padding-bottom: max(86px, var(--mvnpc-reserve, 86px)) !important;
  }
  /* pages whose shell has no .page-wrapper at all keep the same clearance on the body */
  html body.mvnpc-nowrap { padding-bottom: max(86px, var(--mvnpc-reserve, 86px)); }
  /* BEFORE-BETA-SMALLS-0919 END bbs-178-reserve-cannot-drift */

  /* BEFORE-BETA-SMALLS-0919 BEGIN bbs-178-scroll-yield
     While the member is scrolling, the launcher steps aside — the same "stand down" motion
     the composer bar already uses — and comes back 450 ms after the page is still again.
     It never changes position, so there is no hop: it is either there or it is not. */
  html.mvnpc-scrolling body .mvn-fab {
    opacity: 0 !important;
    transform: translateY(18px) !important;
    pointer-events: none !important;   /* the shipped sheet sets .mvn-fab's own box !important */
  }
  html body .mvn-fab {
    transition: opacity .18s ease, transform .22s cubic-bezier(.2, .8, .25, 1);
  }
  @media (prefers-reduced-motion: reduce) {
    html body .mvn-fab { transition-duration: .001ms; }
  }
  /* BEFORE-BETA-SMALLS-0919 END bbs-178-scroll-yield */

}
