/* Survivor One v0.3.24 — installed-PWA scroll recovery + visual viewport chrome anchoring.
   Presentation only. v0.3.23's document height lock is neutralized because it can
   self-freeze a long page after an early short-page measurement. Boundary bounce
   is handled in JS instead, so real overflow always remains scrollable. */

/* Never let the v0.3.23 static-page class turn a real document into a fixed-height
   non-scroller. Keep iOS overscroll suppressed; JS decides whether a gesture may
   continue at the actual current boundary. */
html.v0324-installed.v0323-static-page,
html.v0324-installed.v0323-static-page body{
  height:auto!important;
  min-height:100%!important;
  overflow-y:auto!important;
  overscroll-behavior-y:none!important
}

html.v0324-installed,
html.v0324-installed body,
html.v0324-installed #app,
html.v0324-installed .shell,
html.v0324-installed .main{
  min-height:100dvh!important;
  overflow-x:clip!important
}

html.v0324-installed,
html.v0324-installed body{
  overscroll-behavior-y:none!important
}

/* iOS standalone can report a visual viewport whose physical edge does not line
   up with the layout viewport used by fixed chrome. JS measures that difference
   and supplies tiny translations. Browser/desktop never receives this class. */
@media(max-width:799px){
  html.v0324-installed .topbar{
    position:fixed!important;
    top:0!important;
    left:0!important;
    right:0!important;
    width:100%!important;
    margin:0!important;
    transform:translate3d(0,var(--v0324-top-shift,0px),0)!important
  }
  html.v0324-installed .bottomnav{
    position:fixed!important;
    left:0!important;
    right:0!important;
    bottom:0!important;
    width:100%!important;
    margin:0!important;
    transform:translate3d(0,var(--v0324-bottom-shift,0px),0)!important
  }
}

/* Desktop/web keeps native page scroll, browser zoom and its existing desktop
   rail/header geometry. The v0.3.24 viewport translations are installed-only. */
html.v0324-browser{
  --v0324-top-shift:0px;
  --v0324-bottom-shift:0px
}
