/* Responsive layout — shared across all Flask (web_uploader) pages.
   Breakpoints mirror Streamlit's responsive.py:
     mobile  : ≤ 640 px
     tablet  : 641–1024 px
     desktop : ≥ 1025 px
*/

/* ── Base resets applied everywhere ── */
*, *::before, *::after { box-sizing: border-box; }

/* ── Topnav: collapse links on mobile ── */
@media (max-width: 640px) {
  .topnav {
    height: auto !important;
    flex-wrap: wrap;
    padding: 10px 16px !important;
    gap: 8px;
  }
  .topnav .links {
    flex-wrap: wrap;
    gap: 10px !important;
  }
  .topnav .user {
    border-right: none !important;
    padding-right: 0 !important;
    width: 100%;
  }
  /* Admin-home topbar (different class name) */
  .topbar {
    flex-direction: column;
    align-items: flex-start !important;
    gap: 8px;
  }
}

/* ── Page container: reduce side padding on mobile ── */
@media (max-width: 640px) {
  .page {
    padding: 20px 14px !important;
  }
}

/* ── Link/card grids: single column on mobile ── */
@media (max-width: 640px) {
  .link-grid {
    grid-template-columns: 1fr !important;
  }
  .link-card {
    padding: 14px 16px !important;
  }
}

/* ── Forms & inputs: full-width on mobile ── */
@media (max-width: 640px) {
  .form-row,
  .form-group,
  .input-group {
    flex-direction: column !important;
  }
  input[type="text"],
  input[type="email"],
  input[type="password"],
  input[type="number"],
  select,
  textarea {
    width: 100% !important;
    max-width: 100% !important;
  }
  button[type="submit"],
  .btn,
  .btn-apply {
    width: 100% !important;
  }
}

/* ── Tables: horizontal scroll on small screens ── */
@media (max-width: 1024px) {
  .table-wrap,
  .table-scroll {
    overflow-x: auto !important;
  }
  table {
    min-width: 600px;
  }
}

/* ── Login / register card: full width on mobile ── */
@media (max-width: 640px) {
  .card {
    width: 100% !important;
    padding: 24px 18px !important;
    border-radius: 0 !important;
    border-left: none !important;
    border-right: none !important;
    box-shadow: none !important;
  }
  body {
    align-items: flex-start !important;
  }
}

/* ── Filter bars: stack vertically on mobile ── */
@media (max-width: 640px) {
  .filters {
    flex-direction: column;
  }
  .filter-group {
    width: 100%;
  }
  .filter-group select,
  .filter-group input[type="number"] {
    min-width: unset !important;
    width: 100% !important;
  }
}

/* ── Errors / info banners ── */
@media (max-width: 640px) {
  .banner,
  .flash-messages,
  .info-box {
    padding: 10px 14px !important;
    font-size: 0.88rem !important;
  }
}

/* Versus panel: drop to two bookends above a full-width row stack, so the
   three centre columns keep their width on a phone. */
@media (max-width: 640px) {
  .gaa-versus {
    grid-template-columns: 1fr 1fr;
  }

  .gaa-versus-team {
    order: 1;
  }

  .gaa-versus-rows {
    grid-column: 1 / -1;
    order: 2;
  }

  .gaa-versus-row {
    grid-template-columns: 56px minmax(0, 1fr) 56px;
    gap: 6px;
  }

  .gaa-versus-crest {
    max-width: 56px;
  }
}
