/* ============================================================
   PAY SPORTS — responsividade e imagens
   Arquivo NOVO: css/responsivo.css
   Carregar no index.html DEPOIS de css/main.css.
   Não substitui nada: só acrescenta e corrige.
   ============================================================ */

/* ------------------------------------------------------------
   1. TRAVA DE ROLAGEM LATERAL
   Causa do bug: títulos como "#CorrerAlimentaAAlma" são uma
   palavra só. Sem quebra, a palavra empurra a página e o
   celular passa a rolar para o lado, deslocando o cabeçalho.
   ------------------------------------------------------------ */
html, body {
  max-width: 100%;
  overflow-x: hidden;
}

h1, h2, h3, h4,
.hero h1, .hero h1 em, .hero-sub,
.card-title, .card-desc,
.display, .badge, td, th, p, a, span, strong, label {
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* URLs e e-mails longos não estouram a caixa */
.mono, code, .text-mute, .text-soft {
  overflow-wrap: anywhere;
}

/* Nenhuma mídia passa da largura do pai */
img, video, canvas, svg, iframe {
  max-width: 100%;
}
img, video {
  height: auto;
}

/* ------------------------------------------------------------
   2. IMAGENS SEM CORTE (ajuste automático)
   Cartaz de corrida costuma ser retrato; a moldura do cartão é
   paisagem. Com "cover", as laterais eram cortadas. Agora a
   imagem aparece inteira (contain) e o fundo é a própria imagem
   desfocada, preenchendo as sobras — sem tarja preta.
   ------------------------------------------------------------ */
.media-fit {
  position: relative;
  overflow: hidden;
  background: var(--c-surface-2, #1a2c4d);
}
.media-fit::before {
  content: "";
  position: absolute;
  inset: -8%;
  background-image: var(--media-src);
  background-size: cover;
  background-position: center;
  filter: blur(18px) brightness(0.55) saturate(1.1);
  transform: scale(1.08);
}
.media-fit > img {
  position: relative;
  width: 100%;
  height: 100%;
  object-fit: contain;          /* mostra a imagem inteira */
  display: block;
}

/* Cartaz do evento dentro de cartões já existentes */
.event-card-img,
.category-card-img {
  background-size: cover;
  background-position: center;
}

/* ------------------------------------------------------------
   3. TABELAS EM CELULAR E TABLET
   As listas de inscritos ganharam colunas (nº, CPF, kit, camisa,
   tamanho, data). Em tela pequena elas estouravam a página.
   Agora a tabela rola sozinha, dentro da própria caixa.
   ------------------------------------------------------------ */
@media (max-width: 1024px) {
  .card > table,
  .table {
    display: block;
    width: 100%;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
  .table thead,
  .table tbody {
    display: table;
    width: 100%;
    min-width: 640px;          /* garante a rolagem em vez do esmagamento */
  }
  .table th,
  .table td {
    white-space: nowrap;
  }
  /* o nome pode quebrar: é a coluna mais larga */
  .table td:nth-child(2) {
    white-space: normal;
    min-width: 160px;
  }
}

/* ------------------------------------------------------------
   4. FORMULÁRIOS
   ------------------------------------------------------------ */
@media (max-width: 720px) {
  .form-grid {
    grid-template-columns: 1fr !important;
  }
  .wizard-actions {
    flex-direction: column-reverse;
    gap: 8px;
  }
  .wizard-actions .btn {
    width: 100%;
  }
}

/* Campo nunca mais largo que a tela */
input, select, textarea {
  max-width: 100%;
}

/* ------------------------------------------------------------
   5. JANELAS (modais)
   Em celular a janela precisa caber na altura e rolar por dentro.
   ------------------------------------------------------------ */
@media (max-width: 720px) {
  .modal, #modalBox {
    width: calc(100vw - 24px) !important;
    max-width: calc(100vw - 24px) !important;
    max-height: 88vh;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
  }
  .modal-backdrop {
    padding: 12px;
    align-items: flex-start;
  }
}

/* ------------------------------------------------------------
   6. CAPA DO EVENTO E TÍTULOS
   ------------------------------------------------------------ */
@media (max-width: 720px) {
  .hero {
    padding-left: 16px;
    padding-right: 16px;
    background-position: center top;
  }
  .hero h1 {
    font-size: clamp(26px, 7.5vw, 40px);
    line-height: 1.15;
  }
  .hero h1 em {
    font-size: 0.78em;          /* a hashtag não cabia inteira */
    display: block;
    margin-top: 6px;
  }
  .hero-sub {
    font-size: 15px;
  }
  .hero-meta {
    gap: 10px;
  }
  .hero-cta {
    flex-direction: column;
    align-items: stretch;
  }
  .hero-cta .btn {
    width: 100%;
    justify-content: center;
  }
}

/* ------------------------------------------------------------
   7. TABLET: aproveita melhor a largura
   ------------------------------------------------------------ */
@media (min-width: 721px) and (max-width: 1024px) {
  .grid-3 { grid-template-columns: repeat(2, 1fr); }
  .kpi-grid { grid-template-columns: repeat(2, 1fr); }
  .dash { padding: 16px; }
}

@media (max-width: 720px) {
  .grid-2, .grid-3, .grid-4,
  .kpi-grid, .kpis {
    grid-template-columns: 1fr !important;
  }
  .dash { padding: 12px; gap: 14px; }
  .card { padding: 14px; }
  .dash-head {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }
  .footer-inner { grid-template-columns: 1fr !important; }
}

/* ------------------------------------------------------------
   8. BARRAS DE BOTÕES
   Em telas estreitas, botões lado a lado estouravam a linha.
   ------------------------------------------------------------ */
@media (max-width: 720px) {
  .tbl-tools,
  .flex.gap-2,
  .dash-head > div {
    flex-wrap: wrap;
  }
  .btn {
    white-space: normal;
  }
}

/* ------------------------------------------------------------
   9. CABEÇALHO
   ------------------------------------------------------------ */
@media (max-width: 720px) {
  .topbar-inner {
    padding-left: 14px;
    padding-right: 14px;
  }
  .brand-logo {
    max-height: 42px;
    width: auto;
  }
}

/* ------------------------------------------------------------
   10. MENU DO CELULAR — legibilidade
   O cabeçalho é claro, então os links do menu usam cor escura.
   Ao abrir, o painel é escuro e o texto sumia. Aqui o painel
   aberto passa a ter cores próprias, com contraste.
   ------------------------------------------------------------ */
@media (max-width: 720px) {
  .nav.open {
    width: calc(100vw - 32px);
    max-width: 320px;
    gap: 2px;
    padding: 10px;
    background: var(--c-surface, #122039);
    border: 1px solid var(--c-border-strong, #2e4773);
    box-shadow: 0 18px 40px rgba(0, 0, 0, 0.45);
  }

  .nav.open a {
    color: var(--c-text, #f0f4fa) !important;
    font-size: 16px;
    font-weight: 600;
    text-align: left;
    padding: 14px 14px;
    border-radius: 10px;
    border-bottom: 1px solid var(--c-border, #233a5e);
    opacity: 1 !important;
  }

  .nav.open a:last-of-type {
    border-bottom: none;
  }

  .nav.open a:active,
  .nav.open a:hover {
    background: var(--c-surface-2, #1a2c4d);
    color: var(--c-primary-strong, #ff8540) !important;
  }

  /* "Entrar" continua como botão, ocupando a largura */
  .nav.open a.nav-cta {
    background: var(--c-primary, #ff6b1a);
    color: #fff !important;
    text-align: center;
    margin-top: 8px;
    border-bottom: none;
    font-weight: 700;
  }

  /* Ícone do menu visível sobre o cabeçalho claro */
  .nav-toggle span {
    background: var(--c-secondary, #1a2e5c);
  }
}
