/* WEB-1000 header refinement — single true sticky header (W23) — 2026-10-30.
   STATIC-header adaptation of the fleet pattern (pattern of record:
   ~/workspace/kv-astro/STICKY-HEADER-REQUIREMENT-20261026.md).
   Founder direction (2026-10-26 ~10:35, Rulebook W23): ONE true sticky
   header per site.
   Like WEB-1013 (the statics pilot), this build has a SINGLE static
   header: one <section class="brz-section brz-section__header
   brz-section__header-type--static"> (id t3iqfs0OQtUE_t3iqfs0OQtUE,
   the same global id on all 29 pages) holding logo / nav / phone CTA
   (menu-item oEqFDrQsMW1_; header-row CTA m5dsrUuTlFgn ->
   tel://520-412-8329). There is no animated wrapper, no sticky-item
   div and no duplicate (a full-tree scan found exactly one header
   section per page; no headerless pages). Sticky behavior is ADDED
   to the one header. Brizy's floating call pill (imYP5x9O5yt3, in a
   .brz-wrapper-clone, fixed by Brizy itself) is NOT part of the
   header bar and is untouched.
   MECHANISM — verified by probe on this tree's pristine state (the
   pilot's finding, re-tested here; mechanism-results.json):
   (a) position:sticky on the header section — REJECTED. Computed
       position applied, but the header scrolled away completely
       (viewport y = -900 at scrollY 900 and -3000 at scrollY 3000, at
       1280 / 800 / 390): an ancestor confines the section to its own
       height, the same failure recorded for WEB-1013 and for the
       dual-header sites.
   (b) position:fixed on the header section + body padding-top equal
       to the measured header height per breakpoint — CHOSEN. Probe:
       header at y=0 at scrollY 0 / 900 / 3000 at all three widths;
       hero document-top exactly the padding (141 / 167 / 325);
       no horizontal overflow; zero page errors.
   z-index 2000: Brizy's content sections carry z-index 1055 on their
   menu-item divs, which otherwise paint over a low-z-index header
   (pattern document point 5, measured on WEB-1017).
   NO JAVASCRIPT: the dual-header pattern's refine JS exists only to
   strip inert + aria-hidden from Brizy's animated wrapper. A static
   header's section tag carries neither attribute (verified in the
   markup of all 29 pages) and Brizy's JS never toggles them here, so
   a CSS-only build is the complete mechanism. Nothing about the
   header's own styling is changed — no colors, sizes or layout
   rules are touched.
   Brand tokens — 1000's OWN Brizy globals (--brz-global-color*,
   recorded for provenance; the mechanism needs no color rules):
   global-color1 #403017 (dark brown), global-color2 #1C1C1C
   (near-black), global-color3 #C68A30 (gold), global-color4
   #F3CA6C (light gold), global-color5 #F7F2EE (off-white),
   global-color6 #FFF2CF (cream), global-color7 #030303,
   global-color8 #FFFFFF.
   Header height (measured from the rendered REPAIRED tree — the
   repaired-pristine control, control-results.json): 140.25px at
   >=992px, 166.27px at 768–991px, 324.39px at <=767px (Brizy's
   stacked mobile layout — the site's own design, preserved, not
   normalized). Body padding-top is the ceiling of each measurement
   so the hero is never covered. MEASUREMENT CORRECTION: the
   pre-repair baseline read 307.39px at <=767px, but that tree was
   chunk-defective — with the mmenu chunk missing, Brizy's JS never
   initialized the mobile menu and the header rendered 17px shorter.
   The repaired tree's 324.39px governs; desktop and tablet readings
   were identical on both trees.
   MENU NOTE: this build's probe battery runs on the gate-repaired
   tree — the seven missing Brizy lazy chunks (incl. the mmenu chunk)
   were restored byte-identical from fleet trees before the build
   (repair record in BUILD-NOTE-1000.md); the repaired pristine
   control re-proved the menu opens. This CSS neither adds nor
   changes any menu behavior. */

/* ---------- the one header, made persistent ---------- */
.brz .brz-section__header-type--static {
  /* Brizy's own static header section, fixed to the viewport top.
     !important beats Brizy's generated position:relative. Once fixed,
     the section leaves the flow; body padding-top (below) restores
     the space so nothing shifts and the hero is never covered. */
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  z-index: 2000 !important;
}

/* ---------- the space the fixed header vacates ---------- */
body {
  /* Equals the measured header height per breakpoint band
     (140.25 / 166.27 / 324.39, ceilings). Brizy's own breakpoints:
     desktop >=992px, tablet 768–991px, mobile <=767px. */
  padding-top: 141px !important;
}
@media (min-width: 768px) and (max-width: 991px) {
  body {
    padding-top: 167px !important;
  }
}
@media (max-width: 767px) {
  body {
    padding-top: 325px !important;
  }
}
