/* ═══════════════════════════════════════════════════════════════════════════
   polish.css — structure haven.css doesn't carry

   haven.css styles the *parts* (bar, sheet, runner, buttons, bands) but not the
   two things that hold them in place: the page container and the fixed
   masthead. Those rules are here. Loads after haven.css, before nothing.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Container ───
   Every band, the bar and the hero copy all sit inside .shell. One measure,
   one gutter, centred. */
.hv .shell{
  width:100%;
  max-width:var(--shell,1360px);
  margin-inline:auto;
  padding-inline:var(--gutter,clamp(20px,4vw,56px));
}
.hv .bar .shell,
.hv .sheet .shell{padding-inline:0}

/* ─── Masthead ───
   Fixed, full width, above everything. .bar supplies its own height
   (--nav-h), gutter, ink background and hairline; the sheet hangs off the
   masthead's bottom edge, which is why the masthead is the positioning
   context rather than the bar. */
.hv .masthead{
  position:fixed;
  top:0;left:0;right:0;
  z-index:120;
}
.hv .masthead .bar{position:static}

/* The sheet drops from under the whole masthead, hairline included. */
.hv .sheet{z-index:-1}
.hv .sheet.is-open{z-index:0}

/* Pages whose first section is not the hero still need to clear the bar.
   .hero-c handles its own top padding, so it opts out. */
.hv main > *:first-child:not(.hero){padding-top:calc(var(--nav-h,64px) + clamp(40px,5vw,72px))}

@media print{
  .hv .masthead{position:static}
}
