/* final-qa.css — overflow guard + final polish, production */
html,body{ overflow-x:clip; max-width:100vw; box-sizing:border-box; }
*{ scrollbar-width:thin; }
html{ -webkit-text-size-adjust:100%; }
body{ overscroll-behavior-y:none; }
img,svg,canvas,video{ max-width:100%; height:auto; }
.landing-main, .mobile-equation, #viral-strip, #team-leaderboard, .main, .site-footer, .bottom-tabs, .sheet, .card{ max-width:100vw; box-sizing:border-box; min-width:0; }
.site-nav{ box-sizing:border-box; max-width:100vw; }
.bottom-tabs{ position:fixed; bottom:0; left:0; right:0; z-index:60; padding-bottom: env(safe-area-inset-bottom); }
.card, .btn{ overflow-wrap:break-word; word-break:break-word; }

/* hoops-polish-swarm: safe-area consolidation + mobile edge-to-edge guard */
.site-nav{
  padding-top:calc(10px + env(safe-area-inset-top,0));
  z-index:100;
}
#map-wrap{
  /* ensure mobile edge-to-edge already handled in index.html @media 980px, but guard overflow */
  max-width:100%;
}
#map-controls{
  z-index:6;
  bottom:calc(12px + env(safe-area-inset-bottom,0));
}
#map-legend{
  z-index:6;
  bottom:calc(12px + env(safe-area-inset-bottom,0));
}
#hover-tip{
  z-index:7;
}
.toast, #toast{
  z-index:40;
}
/* nav active match guard - ensure pills don't overflow */
.site-nav::-webkit-scrollbar{display:none}
