/* OUT2 perf fixes (loaded last). See README "Performance". */
/* Hidden-card fix: masonry pins live in CSS multi-columns, which rebalance every time the feed appends a batch,
   so pins jump to the top of later columns (above the viewport) and their .rv IntersectionObserver never fires.
   Pins no longer depend on an observer: they are visible by default and fade in once via a CSS animation on insert.
   (prefers-reduced-motion: base.css already disables all animations, so they simply appear.) */
.masonry .pin.rv{opacity:1;transform:none;transition:none;animation:solaPinIn .55s cubic-bezier(.2,.7,.2,1) both}
@keyframes solaPinIn{from{opacity:0;transform:translateY(12px)}}
/* CLS: JS-rendered pages start empty, so the footer painted at the top and was pushed down (CLS ~0.6-0.75).
   Reserve a viewport of height for the main containers. */
#app,#ev,#gd,#st{min-height:100vh;min-height:100svh}
body.map-loading{cursor:progress}
/* LCP: base.css fades #app in from opacity 0 once rendered; Chrome ignores anything first painted at opacity 0, so the
   hero never counted as LCP. Start the same fade from .01 instead (looks identical; the empty shell is hidden either way). */
html:not(.ready) #app{opacity:.01}
html.early #app{opacity:1;transition:none} /* homepage hero painted early (tools/build_homehero.py) */
/* Home speed (r20b): rows from the third one down skip style/layout/paint until they near the viewport.
   `auto` keeps each row's real height once it has rendered, so scroll position and anchors stay stable. */
#app section.row.rv ~ section.row.rv ~ section.row.rv{content-visibility:auto;contain-intrinsic-size:auto 440px}
/* Event speed (r20b): collapsed mobile sections skip layout until opened; the switch back to hidden waits for the
   close animation (allow-discrete), so opening and closing still slide. Far-down blocks render as they near the view. */
@media (max-width:767px){
  .ev2 .ev2-acc .eg:not(.on) .eg-c{content-visibility:hidden;transition:opacity .3s .05s,transform .35s,content-visibility .38s allow-discrete}
}
#ev #gallery,#ev .verify,#ev .nx,#ev .more,#ev #similar{content-visibility:auto;contain-intrinsic-size:auto 600px}
