/* =====================================================================
   App feel — shared by the library (index.html) and the board (team.html)
   ---------------------------------------------------------------------
   1) Going from one page to the other is a cross-fade, not a white flash:
      the browser keeps the old page on screen until the new one can paint,
      and the header is one named piece, so it stays put while the rest
      changes. Browsers without it (Firefox today) load the page as before.
   2) A returning reader sees the app from the first frame. The inline
      script in <head> marks <html class="signed"> when a stored sign-in is
      there; the shell shows straight away instead of after the session is
      checked. If the session turns out to be gone, the sign-in screen (fixed,
      above everything) covers it as it always did.
   ===================================================================== */
@view-transition{ navigation:auto; }
aside#sidebar{ view-transition-name:app-header; }
::view-transition-group(*){ animation-duration:.2s; }
@media (prefers-reduced-motion:reduce){
  @view-transition{ navigation:none; }
}

html.signed #app{ display:grid; }
/* The look layer builds the header row on DOMContentLoaded. Until it has,
   the bar keeps its finished height and shows nothing — so the first
   frame is the empty bar, never the old sidebar jumping into a row. */
html.signed aside#sidebar:not(:has(.hdr-top)){ min-height:65px; }
html.signed aside#sidebar:not(:has(.hdr-top)) > *{ visibility:hidden; }
