/* ══════════ Clube GymRats (fitness) ══════════
   F0/F1: tela do clube (gate por aprovação) + fila da admin. Reusa os tokens da marca
   (var(--color-*), var(--font-display) = Zodiak) e o mesmo vocabulário visual dos Clubes.
   Selo/identidade = gradiente oliva→ardósia. Eventos/leaderboard/mural entram nas próximas fases. */

.gym-wrap {
    position: relative;
    max-width: 1000px;
    margin: 0 auto;
    padding: 32px 20px 56px;
    overflow: hidden;
}

.gym-spark {
    position: absolute;
    color: #b4b536;
    pointer-events: none;
    animation: gymSpark 3.4s ease-in-out infinite;
}
.gym-spark.s1 { top: 26px; right: 40px; font-size: 26px; }
.gym-spark.s2 { top: 150px; right: 180px; font-size: 14px; color: #ddb1f7; animation-delay: 1.1s; }
@keyframes gymSpark { 0%, 100% { opacity: .25; } 50% { opacity: .7; } }
@media (prefers-reduced-motion: reduce) { .gym-spark { animation: none; } }

.gym-inner { position: relative; }

.gym-vazio {
    background: #fff;
    border-radius: 20px;
    box-shadow: 0 2px 14px rgba(0, 0, 0, 0.06);
    padding: 40px 24px;
    text-align: center;
}

/* ── Header ── */
.gym-head {
    display: flex;
    align-items: flex-end;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 22px;
}
.gym-head-txt { flex: 1; min-width: 260px; }
.gym-head-linha { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }

.gym-selo {
    background: linear-gradient(135deg, #b4b536, #8499b7);
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.08em;
    border-radius: 50px;
    padding: 4px 13px;
}
.gym-membro {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 12px;
    font-weight: 600;
    color: #5c5e00;
}
.gym-sub {
    font-size: 14px;
    color: var(--color-slate);
    margin: 6px 0 0;
}

.gym-stats {
    display: flex;
    align-items: center;
    gap: 14px;
    background: #fff;
    border-radius: 16px;
    padding: 13px 18px;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05);
}
.gym-stat { text-align: center; }
.gym-stat-num {
    font-family: var(--font-display);
    font-size: 17px;
    font-weight: 700;
    color: var(--color-text);
    line-height: 1;
}
.gym-stat-lbl { font-size: 10px; color: var(--color-slate); margin-top: 3px; }
.gym-stat-div { width: 1px; height: 26px; background: rgba(132, 153, 183, 0.25); }

/* ── Aba Clube: placeholder "em breve" (F0) ── */
.gym-embreve {
    background: #fff;
    border-radius: 22px;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
    padding: 40px 28px;
    text-align: center;
}
.gym-embreve-emoji { font-size: 40px; margin-bottom: 10px; }

/* ── Estado bloqueado / em análise ── */
.gym-bloqueio {
    background: #fff;
    border-radius: 22px;
    box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08);
    padding: 34px 28px 30px;
    display: flex;
    flex-direction: column;
    align-items: center;
}
.gym-bloqueio-lock {
    position: relative;
    width: 100%;
    max-width: 320px;
    height: 130px;
    margin-bottom: 18px;
}
.gym-bloqueio-blur {
    position: absolute;
    inset: 0;
    border-radius: 16px;
    background: linear-gradient(135deg, #b4b536, #8499b7);
    filter: blur(2px);
    opacity: 0.5;
}
.gym-bloqueio-emoji {
    position: absolute;
    inset: 0;
    margin: auto;
    width: 54px;
    height: 54px;
    border-radius: 50%;
    background: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.15);
}
.gym-bloqueio-icone {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #fff3ec;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 26px;
    margin-bottom: 16px;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.10);
}

.gym-analise-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #fff3ec;
    color: #d45800;
    font-size: 12px;
    font-weight: 700;
    border-radius: 50px;
    padding: 7px 14px;
}
.gym-analise-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--color-orange); }

.gym-bloqueio-msg {
    margin-top: 14px;
    font-size: 13px;
    color: var(--color-orange);
    text-align: center;
}

/* ══════════ Admin: fila de aprovação ══════════ */
.gym-adm-wrap {
    max-width: 720px;
    margin: 0 auto;
    padding: 28px 20px 56px;
}
.gym-adm-cab {
    display: flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 16px;
}
.gym-adm-selo {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #2b2318;
    color: #f6f2e3;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.06em;
    border-radius: 50px;
    padding: 5px 13px;
}
.gym-adm-cab-txt {
    font-size: 11px;
    color: var(--color-slate);
    font-weight: 700;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}

.gym-adm-card {
    background: #fff;
    border-radius: 20px;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.07);
    padding: 22px 24px;
}
.gym-adm-card-head {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 12px;
}
.gym-adm-count {
    background: #fff3ec;
    color: #d45800;
    font-size: 11px;
    font-weight: 700;
    border-radius: 50px;
    padding: 4px 10px;
}

.gym-adm-fila { display: flex; flex-direction: column; }
.gym-adm-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 13px 0;
    border-top: 1px solid rgba(132, 153, 183, 0.14);
}
.gym-adm-item:first-child { border-top: none; }
.gym-adm-item-txt { flex: 1; min-width: 0; }
.gym-adm-item-nome {
    font-family: var(--font-display);
    font-size: 14px;
    font-weight: 700;
    color: var(--color-text);
}
.gym-adm-item-acoes { display: flex; gap: 7px; flex-shrink: 0; }

/* Aprovar = oliva (status positivo do design system). */
.gym-btn-aprovar {
    background: #b4b536;
    color: #fff;
    border: none;
}
.gym-btn-aprovar:hover:not(:disabled) { background: #9fa030; }
/* Recusar = outline vermelho. */
.gym-btn-recusar {
    color: #e8473f;
    border-color: rgba(232, 71, 63, 0.4);
}
.gym-btn-recusar:hover:not(:disabled) { background: rgba(232, 71, 63, 0.06); }

@media (max-width: 560px) {
    /* .gym-adm-evitem (lista de eventos) usa as MESMAS .gym-adm-item-acoes; sem o wrap aqui, os
       botões (nowrap, flex-shrink:0) espremiam o texto até quebrar palavra por palavra e sobrepor
       o card no celular. Com wrap, as ações caem pra uma 2ª linha em largura cheia. */
    .gym-adm-item, .gym-adm-evitem { flex-wrap: wrap; }
    .gym-adm-item-acoes { width: 100%; }
    .gym-adm-item-acoes .btn { flex: 1; }

    /* No celular o pódio de colunas fixas (3×92px + gaps) não cabe → afrouxar paddings e deixar
       as colunas flexíveis, pra o leaderboard caber sem estourar/cortar o "pts". */
    .gym-hero-body { padding: 18px 16px; }
    .gym-mini-lb, .gym-lb-card { padding: 16px 14px; }
    .gym-podio { gap: 8px; }
    .gym-podio-col { width: auto; flex: 1 1 0; min-width: 0; }
    .gym-podio-nome { font-size: 12px; overflow-wrap: anywhere; }
}

/* ══════════ Abas (Clube · Eventos · Mural) ══════════ */
.gym-tabs { display: flex; gap: 8px; margin-bottom: 20px; flex-wrap: wrap; }
.gym-tab {
    background: #fff; color: var(--color-slate); border: 1.5px solid rgba(132, 153, 183, 0.25);
    font-size: 13px; font-weight: 500; border-radius: 50px; padding: 8px 19px; cursor: pointer;
}
.gym-tab.on { background: #ddb1f7; color: var(--color-text); font-weight: 700; border-color: transparent; }
.gym-tab-admin { margin-left: auto; color: #9b59d6; border-color: rgba(155, 89, 214, 0.3); }

/* ── Hero do gymrats ativo (aba Clube) ── */
.gym-hero {
    display: grid; grid-template-columns: 1fr; gap: 0; background: #fff; border-radius: 22px;
    overflow: hidden; box-shadow: 0 4px 24px rgba(0, 0, 0, 0.08); margin-bottom: 18px;
}
@media (min-width: 780px) { .gym-hero { grid-template-columns: 1.5fr 300px; } .gym-hero-cover { grid-column: 1 / -1; } }
/* Itens de grid herdam min-width:auto (= min-content); sem isto, o pódio de largura fixa lá dentro
   estica a coluna além da tela no celular e o .gym-wrap (overflow:hidden) corta o "pts"/pódio. */
.gym-hero > * { min-width: 0; }
.gym-hero-cover {
    position: relative; min-height: 150px; padding: 22px 26px; overflow: hidden;
    display: flex; flex-direction: column; justify-content: flex-end;
}
.gym-hero-num {
    position: absolute; top: -30px; right: -6px; font-family: var(--font-display); font-size: 130px;
    font-weight: 700; color: rgba(255, 255, 255, 0.14); line-height: 1;
}
.gym-chip-ativo {
    align-self: flex-start; display: inline-flex; align-items: center; gap: 6px;
    background: rgba(255, 255, 255, 0.92); color: #5c5e00; font-size: 11px; font-weight: 700;
    border-radius: 50px; padding: 5px 12px; margin-bottom: 10px;
}
/* Chips do topo da capa: ATIVO + frequência mínima, lado a lado. */
.gym-hero-chips { display: flex; flex-wrap: wrap; gap: 8px; align-self: flex-start; margin-bottom: 10px; }
.gym-hero-chips .gym-chip-ativo { margin-bottom: 0; }
.gym-chip-freq {
    display: inline-flex; align-items: center; gap: 5px; background: rgba(43, 35, 24, 0.55);
    color: #fff; font-size: 11px; font-weight: 700; border-radius: 50px; padding: 5px 12px;
}
/* Thumbs dos parceiros no topo-direito da capa → clique leva à aba Parceiros do evento. */
.gym-hero-parceiros { position: absolute; top: 14px; right: 14px; z-index: 3; display: flex; flex-direction: column; align-items: flex-end; gap: 6px; background: none; border: none; padding: 0; cursor: pointer; }
.gym-hero-parc-lbl { font-size: 10px; font-weight: 700; color: #fff; background: rgba(43, 35, 24, 0.5); border-radius: 50px; padding: 3px 10px; }
.gym-hero-parc-thumbs { display: flex; }
/* Cada thumb é um <ParceiroLogo> (.parc-logo): força círculo + empilhamento com borda branca. */
.gym-hero-parc-thumbs .parc-logo {
    width: 30px !important; height: 30px !important; border-radius: 50% !important;
    margin-left: -8px; border: 2px solid rgba(255, 255, 255, 0.92); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.25);
}
.gym-hero-parc-thumbs .parc-logo:first-child { margin-left: 0; }
.gym-hero-parc-mais {
    width: 30px; height: 30px; border-radius: 50%; margin-left: -8px; border: 2px solid rgba(255, 255, 255, 0.92);
    display: inline-flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 700;
    color: #fff; background: rgba(43, 35, 24, 0.6);
}
.gym-hero-parceiros:hover .gym-hero-parc-lbl { background: var(--color-orange); }
.gym-hero-nome {
    font-family: var(--font-display); font-size: 26px; font-weight: 700; color: #fff; line-height: 1.1;
    text-shadow: 0 2px 8px rgba(0, 0, 0, 0.18);
}
.gym-hero-periodo { font-size: 12px; color: rgba(255, 255, 255, 0.9); margin-top: 5px; }
.gym-hero-body { padding: 22px 26px; display: flex; flex-direction: column; gap: 12px; }
.gym-freq-chip {
    display: inline-flex; align-items: center; gap: 7px; background: rgba(132, 153, 183, 0.12);
    color: #4a5e72; font-size: 12px; font-weight: 600; border-radius: 50px; padding: 7px 14px; align-self: flex-start;
}
.gym-metas { display: flex; flex-direction: column; gap: 9px; }
.gym-meta { display: flex; align-items: center; gap: 11px; background: #faf7ee; border-radius: 12px; padding: 10px 14px; }
.gym-meta-ic {
    width: 34px; height: 34px; border-radius: 50%; background: rgba(180, 181, 54, 0.15);
    display: flex; align-items: center; justify-content: center; font-size: 14px; flex-shrink: 0;
}
.gym-meta-txt { flex: 1; min-width: 0; }
.gym-meta-nome { font-size: 13px; font-weight: 600; color: var(--color-text); }
.gym-meta-ok {
    background: rgba(180, 181, 54, 0.15); color: #5c5e00; font-size: 11px; font-weight: 700;
    border-radius: 50px; padding: 4px 10px; white-space: nowrap;
}
.gym-meta-falta { font-size: 11.5px; font-weight: 700; color: var(--color-orange); white-space: nowrap; }
.gym-nota-checkin {
    background: #faf7ee; border-radius: 12px; padding: 11px 15px; font-size: 12.5px; color: #6b5f50; line-height: 1.5;
}

/* ── Regras do clube (tab + popup de adesão) ── */
.gym-regras { background: #fff; border-radius: 20px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.07); padding: 22px 24px; }
.gym-regras-modal { max-width: 560px; width: 92%; }
.gym-regras-corpo { max-height: 52vh; overflow-y: auto; padding: 2px; }

/* ── Adesão + vínculo com evento oficial ── */
.gym-aderir { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gym-aderi-ok {
    display: inline-flex; align-items: center; gap: 6px; background: rgba(180, 181, 54, 0.15); color: #5c5e00;
    font-size: 12.5px; font-weight: 700; border-radius: 50px; padding: 7px 14px;
}
.gym-vinculo {
    background: #f5ecff; border-radius: 12px; padding: 10px 14px; font-size: 12px; color: #6b5f50; line-height: 1.5;
}
/* Card do evento oficial vinculado — mesmo visual dos cards oficiais da Home (capa + scrim + texto branco). */
.gym-vinc-card {
    position: relative; overflow: hidden; border-radius: 16px; cursor: pointer;
    min-height: 104px; display: flex; align-items: center; gap: 12px; padding: 16px 18px;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08);
}
.gym-vinc-bg { position: absolute; inset: 0; border-radius: 16px; }
.gym-vinc-conteudo { position: relative; z-index: 1; flex: 1; min-width: 0; }
.gym-vinc-selo {
    display: inline-block; background: rgba(255, 255, 255, 0.25); color: #fff;
    font-size: 11px; font-weight: 700; letter-spacing: 0.04em; border-radius: 50px; padding: 4px 11px;
}
.gym-vinc-titulo { font-family: var(--font-display); font-size: 20px; font-weight: 700; color: #fff; margin: 10px 0 3px; }
.gym-vinc-info { font-size: 13px; color: rgba(255, 255, 255, 0.92); }
.gym-vinc-cta {
    position: relative; z-index: 1; flex-shrink: 0; background: #fff; color: var(--color-orange);
    border-radius: 50px; padding: 9px 18px; font-size: 13px; font-weight: 600; white-space: nowrap;
}
.gym-vinc-nota { font-size: 12px; color: var(--color-slate); margin-top: -2px; }
.gym-tier-badge {
    display: inline-block; background: #2b2318; color: #ffd27a; font-size: 9px; font-weight: 700;
    letter-spacing: 0.04em; border-radius: 50px; padding: 2px 8px; margin-left: 7px;
    vertical-align: middle; text-transform: uppercase; white-space: nowrap;
}
.gym-hero-brindes { background: #faf7ee; border-left: 1px solid rgba(132, 153, 183, 0.15); padding: 22px; }
.gym-brindes-tit { font-size: 11px; font-weight: 700; color: var(--color-slate); letter-spacing: 0.08em; margin-bottom: 12px; }
.gym-brinde { display: flex; align-items: center; gap: 11px; background: #fff; border-radius: 14px; padding: 11px 13px; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); margin-bottom: 10px; }
.gym-brinde-fig { width: 42px; height: 42px; border-radius: 10px; flex-shrink: 0; display: flex; align-items: center; justify-content: center; }
.gym-meta-ic-brinde { background: #fff3ec; }
.gym-cover-preview { width: 104px; height: 64px; border-radius: 12px; flex-shrink: 0; }
.gym-brinde-nome { font-size: 13px; font-weight: 600; color: var(--color-text); }
.gym-brindes-nota { background: rgba(180, 181, 54, 0.12); border-radius: 12px; padding: 10px 13px; font-size: 11.5px; color: #5c5e00; line-height: 1.5; }
/* Metas movidas para a coluna direita (mesmo fundo #faf7ee da coluna): cartões brancos p/ contrastar. */
.gym-metas-side { margin-bottom: 18px; }
.gym-metas-side .gym-meta { background: #fff; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); }

/* ── Mini leaderboard (aba Clube) ── */
.gym-mini-lb, .gym-lb-card {
    background: #fff; border-radius: 20px; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.07); padding: 20px 22px; margin-bottom: 18px;
}
.gym-painel-tit { font-family: var(--font-display); font-size: 18px; font-weight: 700; color: var(--color-text); margin-bottom: 12px; }
.gym-lb-linha { display: flex; align-items: center; gap: 12px; padding: 8px 6px; border-radius: 10px; }
.gym-lb-linha.eu { background: #fff8f3; outline: 1.5px dashed rgba(255, 110, 31, 0.35); }
.gym-lb-pos { width: 26px; text-align: center; font-family: var(--font-display); font-size: 14px; font-weight: 700; color: var(--color-slate); }
.gym-lb-nome { font-size: 13.5px; font-weight: 600; color: var(--color-text); }
.gym-lb-nome-wrap { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.gym-lb-pts { font-size: 13px; font-weight: 700; color: #6b5f50; white-space: nowrap; }
.gym-lb-pts small { font-family: var(--font-body); font-size: 10px; font-weight: 400; color: var(--color-slate); }

/* ── Carrossel de eventos (aba Clube) ── */
.gym-carrossel-head { font-family: var(--font-display); font-size: 16px; font-weight: 700; color: var(--color-text); margin: 4px 0 12px; }
.gym-carrossel { display: flex; gap: 12px; overflow-x: auto; padding-bottom: 8px; margin-bottom: 18px; scroll-snap-type: x proximity; }
.gym-carr-card {
    flex-shrink: 0; width: 210px; scroll-snap-align: start; text-align: left; background: #fff; border: none;
    border-radius: 18px; overflow: hidden; cursor: pointer; padding: 0; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.07);
    transition: transform .18s, box-shadow .18s;
}
.gym-carr-card:hover { transform: translateY(-3px); box-shadow: 0 12px 28px rgba(0, 0, 0, 0.12); }
.gym-carr-cover { height: 78px; position: relative; padding: 12px 14px; overflow: hidden; }
.gym-carr-body { padding: 11px 14px; display: flex; flex-direction: column; gap: 4px; font-size: 11px; color: var(--color-slate); }

/* ── Filtros (aba Eventos) ── */
.gym-filtros { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 20px; }
.gym-busca { position: relative; flex: 1; min-width: 200px; max-width: 340px; }
.gym-busca svg { position: absolute; left: 15px; top: 12px; }
.gym-busca input {
    width: 100%; background: #fff; border: 1.5px solid transparent; border-radius: 50px;
    padding: 11px 16px 11px 40px; font-family: var(--font-body); font-size: 13.5px; color: var(--color-text);
    outline: none; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
}
.gym-fchip {
    background: #fff; color: var(--color-slate); border: none; font-size: 12.5px; font-weight: 600;
    border-radius: 50px; padding: 9px 16px; cursor: pointer; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
}
.gym-fchip.on { background: #ddb1f7; color: var(--color-text); font-weight: 700; }

/* ── Grid de eventos ── */
.gym-eventos-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.gym-ecard {
    text-align: left; background: #fff; border: none; border-radius: 20px; overflow: hidden; cursor: pointer;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.07); transition: transform .18s, box-shadow .18s; padding: 0;
}
.gym-ecard:hover { transform: translateY(-4px); box-shadow: 0 14px 32px rgba(0, 0, 0, 0.13); }
.gym-ecard-cover { height: 86px; position: relative; padding: 14px 18px; overflow: hidden; }
.gym-ecard-num { position: absolute; top: -18px; right: -8px; font-family: var(--font-display); font-size: 86px; font-weight: 700; color: rgba(255, 255, 255, 0.16); line-height: 1; }
.gym-ecard-status { display: inline-flex; align-items: center; gap: 5px; background: rgba(255, 255, 255, 0.92); font-size: 10px; font-weight: 700; border-radius: 50px; padding: 4px 10px; }
.gym-ecard-nome { position: absolute; bottom: 12px; left: 18px; font-family: var(--font-display); font-size: 18px; font-weight: 700; color: #fff; text-shadow: 0 1px 6px rgba(0, 0, 0, 0.2); }
.gym-ecard-body { padding: 14px 18px; }
.gym-ecard-meta { display: flex; align-items: center; gap: 12px; font-size: 11.5px; color: var(--color-slate); margin-bottom: 11px; flex-wrap: wrap; }
.gym-ecard-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.gym-ecard-campea { font-size: 12px; color: #6b5f50; }
.gym-ecard-cta { font-size: 12px; font-weight: 700; color: var(--color-orange); }

/* ── Mural (álbuns polaroid) ── */
.gym-mural-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 26px; }
.gym-album { position: relative; height: 190px; background: none; border: none; cursor: pointer; padding: 0; }
.gym-album-l3 { position: absolute; inset: 10px 6px 4px; border-radius: 14px; transform: rotate(4deg); opacity: .5; }
.gym-album-l2 { position: absolute; inset: 6px 4px 8px; border-radius: 14px; transform: rotate(-3deg); opacity: .72; }
.gym-album-l1 {
    position: absolute; inset: 0 0 12px; border-radius: 16px; transform: rotate(-1deg);
    box-shadow: 0 10px 26px rgba(0, 0, 0, 0.18); display: flex; flex-direction: column; justify-content: flex-end;
    padding: 14px 16px; overflow: hidden; transition: transform .2s;
}
.gym-album:hover .gym-album-l1 { transform: rotate(0deg) scale(1.02); }
.gym-album-count { position: absolute; top: 10px; right: 12px; background: rgba(0, 0, 0, 0.28); color: #fff; font-size: 10.5px; font-weight: 700; border-radius: 50px; padding: 4px 10px; }
.gym-album-nome { font-family: var(--font-display); font-size: 18px; font-weight: 700; color: #fff; text-shadow: 0 2px 8px rgba(0, 0, 0, 0.25); }
.gym-album-data { font-size: 11px; color: rgba(255, 255, 255, 0.9); }

/* ══════════ Detalhe do evento ══════════ */
.gym-ev-cover {
    position: relative; border-radius: 20px; padding: 26px; min-height: 130px; overflow: hidden;
    display: flex; flex-direction: column; justify-content: flex-end; margin-bottom: 16px;
}
.gym-ev-nome { font-family: var(--font-display); font-size: 26px; font-weight: 700; color: #fff; text-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); }
.gym-subtabs, .gym-gerir-tabs { display: flex; gap: 8px; margin-bottom: 18px; flex-wrap: wrap; }
.gym-subtab {
    background: #fff; color: var(--color-slate); border: 1.5px solid rgba(132, 153, 183, 0.25);
    font-size: 13px; font-weight: 500; border-radius: 50px; padding: 8px 18px; cursor: pointer;
}
.gym-subtab.on { background: #ddb1f7; color: var(--color-text); font-weight: 700; border-color: transparent; }
.gym-h3 { font-family: var(--font-display); font-size: 18px; font-weight: 700; color: var(--color-text); margin: 0; }

/* ── Leaderboard (pódio) ── */
.gym-lb-toggle { display: inline-flex; background: #f6f2e3; border-radius: 12px; padding: 4px; gap: 4px; margin-bottom: 16px; }
.gym-lb-tab { background: none; border: none; color: var(--color-slate); font-size: 12px; font-weight: 600; border-radius: 9px; padding: 7px 14px; cursor: pointer; }
.gym-lb-tab.on { background: #fff; color: var(--color-orange); font-weight: 700; box-shadow: 0 1px 5px rgba(0, 0, 0, 0.07); }
.gym-podio { display: flex; align-items: flex-end; justify-content: center; gap: 14px; margin-bottom: 20px; padding-top: 8px; }
.gym-podio-col { text-align: center; width: 92px; }
.gym-podio-coroa { font-size: 20px; margin-bottom: 2px; }
.gym-podio-av { display: flex; justify-content: center; margin-bottom: 6px; }
.gym-podio-nome { font-family: var(--font-display); font-size: 13px; font-weight: 700; color: var(--color-text); }
.gym-podio-pts { font-size: 11px; color: var(--color-slate); margin-bottom: 7px; }
.gym-podio-base { border-radius: 12px 12px 0 0; display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-weight: 700; color: #fff; }
.gym-podio-base-1 { height: 82px; font-size: 26px; background: linear-gradient(180deg, #ff6e1f, #e05a10); }
.gym-podio-base-2 { height: 58px; font-size: 20px; background: linear-gradient(180deg, #ddb1f7, #c795ec); }
.gym-podio-base-3 { height: 42px; font-size: 18px; background: linear-gradient(180deg, #8499b7, #6d84a6); }

/* ── Leaderboard global (card escuro) ── */
.gym-global { background: #2b2318; border-radius: 22px; padding: 22px 24px; box-shadow: 0 6px 28px rgba(43, 35, 24, 0.3); }
.gym-global-linha { display: flex; align-items: center; gap: 12px; padding: 10px 4px; border-top: 1px solid rgba(246, 242, 227, 0.1); }
.gym-global-linha.eu { background: rgba(255, 110, 31, 0.12); border-radius: 10px; }
.gym-global-pos { width: 26px; text-align: center; font-family: var(--font-display); font-size: 15px; font-weight: 700; color: #ffd27a; }
.gym-global-nome { font-size: 13.5px; font-weight: 600; color: #f6f2e3; }
.gym-global-ev { font-size: 11px; color: rgba(246, 242, 227, 0.5); }
.gym-global-total { text-align: right; font-family: var(--font-display); font-size: 17px; font-weight: 700; color: #ffd27a; }
.gym-global-total span { display: block; font-family: var(--font-body); font-size: 10px; font-weight: 400; color: rgba(246, 242, 227, 0.5); }
.gym-global-nota { background: rgba(246, 242, 227, 0.08); border-radius: 12px; padding: 10px 14px; font-size: 11.5px; color: rgba(246, 242, 227, 0.7); line-height: 1.5; margin-top: 14px; }

/* ── Parceiros ── */
.gym-parc-destaque { display: flex; background: #fff; border-radius: 22px; overflow: hidden; box-shadow: 0 6px 28px rgba(0, 0, 0, 0.09); margin-bottom: 16px; flex-wrap: wrap; }
.gym-parc-logo { width: 200px; min-height: 170px; flex-shrink: 0; position: relative; display: flex; align-items: center; justify-content: center; }
.gym-parc-badge { position: absolute; top: 14px; left: 16px; background: #2b2318; color: #ffd27a; font-size: 10px; font-weight: 700; letter-spacing: 0.06em; border-radius: 50px; padding: 5px 12px; }
.gym-parc-ini { width: 90px; height: 90px; border-radius: 22px; background: rgba(255, 255, 255, 0.94); display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-size: 30px; font-weight: 700; color: #9b59d6; }
.gym-parc-info { flex: 1; min-width: 280px; padding: 22px 26px; }
.gym-parc-nome-linha { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; flex-wrap: wrap; }
.gym-parc-nome-linha h3 { font-family: var(--font-display); font-size: 20px; font-weight: 700; margin: 0; }
.gym-parc-cat { background: #f5ecff; color: #9b59d6; font-size: 11px; font-weight: 700; border-radius: 50px; padding: 4px 11px; }
.gym-parc-oferta { background: #faf7ee; border-radius: 14px; padding: 13px 16px; margin-bottom: 12px; }
.gym-parc-oferta-lbl { font-size: 10.5px; font-weight: 700; color: #d45800; letter-spacing: 0.08em; margin-bottom: 5px; }
.gym-parc-links { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.gym-parc-cupom { display: inline-flex; align-items: center; gap: 6px; background: #fff3ec; color: #d45800; font-size: 12px; font-weight: 700; border-radius: 50px; padding: 7px 14px; }
.gym-parc-lista { display: flex; flex-direction: column; gap: 10px; }
.gym-parc-item { display: flex; align-items: center; gap: 12px; background: #fff; border-radius: 16px; padding: 13px 16px; box-shadow: 0 2px 12px rgba(0, 0, 0, 0.05); }
.gym-parc-item-logo { width: 46px; height: 46px; border-radius: 13px; display: flex; align-items: center; justify-content: center; font-family: var(--font-display); font-size: 16px; font-weight: 700; color: #fff; flex-shrink: 0; }
.gym-parc-item-nome { font-family: var(--font-display); font-size: 15px; font-weight: 700; color: var(--color-text); }
.gym-parc-chip { background: rgba(180, 181, 54, 0.12); color: #5c5e00; font-size: 11px; font-weight: 700; border-radius: 50px; padding: 5px 11px; white-space: nowrap; }

/* ── Fotos (mosaico) ── */
.gym-fotos-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 8px; }
.gym-foto-tile {
    position: relative; aspect-ratio: 1; border-radius: 14px; overflow: hidden; background: #efe9d8;
    border: none; padding: 0; cursor: pointer;
}
.gym-foto-tile:hover img { transform: scale(1.04); }
.gym-foto-tile img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform .2s; }
.gym-foto-ph { width: 100%; height: 100%; background: linear-gradient(135deg, #ddb1f7, #ff6e1f); opacity: .3; }
.gym-foto-like {
    position: absolute; left: 8px; bottom: 8px; display: inline-flex; align-items: center; gap: 4px;
    background: rgba(0, 0, 0, 0.42); color: #fff; font-size: 11px; font-weight: 700; border-radius: 50px; padding: 3px 9px;
}
.gym-foto-like.on { color: #ff6e6e; }

/* Remover foto do álbum (só admin/organizadora): lixeira no canto + confirmação inline sobre o tile. */
.gym-foto-wrap { position: relative; }
.gym-foto-wrap .gym-foto-tile { width: 100%; display: block; }
.gym-foto-del {
    position: absolute; top: 6px; right: 6px; width: 28px; height: 28px; border-radius: 50%;
    border: none; cursor: pointer; background: rgba(0, 0, 0, 0.45); color: #fff; font-size: 13px;
    display: flex; align-items: center; justify-content: center; line-height: 1;
}
.gym-foto-del:hover { background: #e8473f; }
.gym-foto-confirm {
    position: absolute; inset: 0; border-radius: 14px; background: rgba(43, 35, 24, 0.82);
    color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 8px; font-size: 12px; font-weight: 600; text-align: center; padding: 6px;
}
.gym-foto-confirm-acoes { display: flex; gap: 6px; }
.gym-foto-confirm-sim, .gym-foto-confirm-nao {
    border: none; border-radius: 50px; padding: 5px 13px; font-size: 12px; font-weight: 700; cursor: pointer;
}
.gym-foto-confirm-sim { background: #e8473f; color: #fff; }
.gym-foto-confirm-nao { background: #f6f2e3; color: #2b2318; }

/* ── Lightbox (visualizador de foto) ── */
.gym-lightbox {
    position: fixed; inset: 0; z-index: 1300; display: flex; align-items: center; justify-content: center;
    gap: 8px; background: rgba(20, 16, 10, 0.82); padding: 24px;
}
.gym-lb-conteudo { position: relative; max-width: min(92vw, 820px); max-height: 86vh; display: flex; flex-direction: column; align-items: center; }
.gym-lb-conteudo img { max-width: 100%; max-height: 78vh; border-radius: 16px; box-shadow: 0 12px 40px rgba(0, 0, 0, 0.4); display: block; }
.gym-lb-loading { color: rgba(255, 255, 255, 0.8); font-size: 14px; padding: 60px; }
.gym-lb-heart {
    margin-top: 14px; display: inline-flex; align-items: center; gap: 7px; background: rgba(255, 255, 255, 0.14);
    color: #fff; border: none; border-radius: 50px; padding: 9px 18px; font-size: 15px; font-weight: 700; cursor: pointer;
    transition: background .15s;
}
.gym-lb-heart .gym-lb-heart-ic { font-size: 18px; color: rgba(255, 255, 255, 0.7); }
.gym-lb-heart.on { background: rgba(255, 110, 110, 0.2); }
.gym-lb-heart.on .gym-lb-heart-ic { color: #ff6e6e; }
.gym-lb-heart:disabled { opacity: .6; cursor: default; }
.gym-lb-nav {
    background: rgba(255, 255, 255, 0.14); color: #fff; border: none; width: 44px; height: 44px; border-radius: 50%;
    font-size: 28px; line-height: 1; cursor: pointer; flex-shrink: 0;
}
.gym-lb-nav:hover { background: rgba(255, 255, 255, 0.26); }
.gym-lb-fechar {
    position: absolute; top: 20px; right: 22px; background: rgba(255, 255, 255, 0.14); color: #fff; border: none;
    width: 40px; height: 40px; border-radius: 50%; font-size: 18px; cursor: pointer;
}
@media (max-width: 560px) { .gym-lb-nav { display: none; } }

/* ══════════ Admin: eventos ══════════ */
.gym-adm-wide { max-width: 860px; }
.gym-adm-evlista { display: flex; flex-direction: column; gap: 10px; }
.gym-adm-evitem { display: flex; align-items: center; gap: 12px; padding: 12px 0; border-top: 1px solid rgba(132, 153, 183, 0.14); }
.gym-adm-evitem:first-child { border-top: none; }

.gym-form { display: flex; flex-direction: column; gap: 6px; }
.gym-form .input-label { margin-top: 8px; }
.gym-form-linha { display: flex; gap: 12px; flex-wrap: wrap; }
.gym-stepper { display: flex; align-items: center; gap: 10px; background: #f6f2e3; border: 1.5px solid rgba(132, 153, 183, 0.25); border-radius: 12px; padding: 9px 12px; }
.gym-stepper button { width: 26px; height: 26px; border-radius: 50%; background: #fff; border: none; font-size: 15px; color: var(--color-orange); cursor: pointer; box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08); }
.gym-stepper span { flex: 1; text-align: center; font-family: var(--font-display); font-size: 16px; font-weight: 700; color: var(--color-text); }
.gym-stepper small { font-family: var(--font-body); font-size: 11px; color: var(--color-slate); font-weight: 400; }
.gym-stepper-sm { padding: 5px 8px; }
.gym-stepper-sm span { min-width: 24px; font-size: 14px; }
/* Presença manual: nick da usuária + campos score/freq lado a lado. */
.gym-nick { font-size: 11.5px; color: var(--color-slate); }
.gym-sem-nick { font-size: 11.5px; font-weight: 700; color: #e8473f; }
.gym-pres-campos { display: flex; align-items: flex-end; gap: 10px; flex-shrink: 0; flex-wrap: wrap; }
.gym-pres-campo { display: flex; flex-direction: column; align-items: center; gap: 3px; }
.gym-pres-lbl { font-size: 9px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--color-slate); }
.gym-pres-score { width: 66px; text-align: center; background: #f6f2e3; border: 1.5px solid rgba(132, 153, 183, 0.25); border-radius: 10px; padding: 7px 8px; font-size: 13px; font-weight: 600; color: var(--color-text); }
/* Leaderboard dentro do hero (do evento ativo): mesmo modelo do detalhe (pódio + lista), lista com scroll. */
.gym-hero-lb { margin-top: 2px; }
.gym-hero-lb-scroll { max-height: 240px; overflow-y: auto; }
.gym-cover-swatches { display: flex; gap: 8px; flex-wrap: wrap; }
.gym-swatch { width: 40px; height: 28px; border-radius: 8px; border: 2px solid transparent; cursor: pointer; }
.gym-swatch.on { border-color: var(--color-orange); box-shadow: 0 0 0 2px rgba(255, 110, 31, 0.2); }
.gym-editlist { display: flex; flex-direction: column; gap: 8px; }
.gym-editrow { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.gym-x { background: none; border: none; color: #e8473f; font-size: 14px; cursor: pointer; padding: 6px; }
.gym-form-acoes { display: flex; justify-content: flex-end; gap: 8px; margin-top: 16px; }
.gym-composer { background: #faf7ee; border-radius: 16px; padding: 18px; display: flex; flex-direction: column; gap: 4px; }
.gym-composer .input-label { margin-top: 6px; }
.gym-toggle-linha { display: flex; align-items: center; justify-content: space-between; background: #fff; border-radius: 12px; padding: 10px 13px; margin: 8px 0; font-size: 12.5px; font-weight: 600; color: var(--color-text); }
.gym-switch { position: relative; width: 40px; height: 23px; flex-shrink: 0; }
.gym-switch input { opacity: 0; width: 0; height: 0; }
.gym-switch span { position: absolute; inset: 0; background: #e8e4da; border-radius: 50px; cursor: pointer; transition: .2s; }
.gym-switch span::before { content: ""; position: absolute; top: 2.5px; left: 3px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: .2s; }
.gym-switch input:checked + span { background: var(--color-orange); }
.gym-switch input:checked + span::before { transform: translateX(17px); }
.gym-upload { cursor: pointer; }

/* Busca full-width (participantes / resolução do import) */
.gym-busca-full { max-width: none; width: 100%; margin-bottom: 10px; }

/* Adicionar participante à mão (busca na plataforma) + perfil no popup de confirmação */
.gym-addpart { background: #faf7ee; border-radius: 14px; padding: 12px 14px; margin-bottom: 12px; }
.gym-add-status { position: absolute; right: 16px; top: 12px; font-size: 12px; color: var(--color-text-muted); }
.gym-confirm-perfil { display: flex; align-items: center; gap: 14px; margin-top: 14px; }
.gym-aderi-fechado { display: inline-flex; align-items: center; gap: 6px; background: #e8e4da; color: #6b5f50; font-size: 12.5px; font-weight: 700; border-radius: 50px; padding: 7px 14px; }

/* Importação do JSON (pós-importação) */
.gym-import-sec { font-size: 12px; font-weight: 700; color: #5c5e00; letter-spacing: 0.04em; margin: 14px 0 8px; }
.gym-import-sec.pend { color: #d45800; }
.gym-import-linha { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 10px; border-radius: 10px; background: rgba(180, 181, 54, 0.10); margin-bottom: 6px; font-size: 13px; flex-wrap: wrap; }
.gym-import-pend { background: #fff3ec; border-radius: 12px; padding: 12px 14px; margin-bottom: 10px; }
.gym-import-cands { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.gym-import-cand { display: inline-flex; align-items: center; gap: 6px; background: #fff; border: 1.5px solid rgba(132, 153, 183, 0.25); border-radius: 50px; padding: 5px 12px 5px 6px; font-size: 12.5px; font-weight: 600; color: var(--color-text); cursor: pointer; }
.gym-import-cand:hover:not(:disabled) { border-color: var(--color-orange); color: var(--color-orange); }
.gym-import-cand-av { pointer-events: none; display: inline-flex; }
/* Preview da importação: uma linha por membro do JSON com conferência manual. */
.gym-import-linha2 { display: flex; align-items: flex-start; gap: 10px; padding: 10px; border-radius: 12px; background: #faf7ee; margin-bottom: 8px; }
.gym-import-linha2.ok { background: rgba(180, 181, 54, 0.12); }
.gym-import-chk { width: 18px; height: 18px; margin-top: 4px; flex-shrink: 0; accent-color: var(--color-orange); cursor: pointer; }
.gym-import-linha2-txt { flex: 1; min-width: 0; }
.gym-import-sit { display: inline-block; margin-left: 6px; font-size: 10px; font-weight: 700; border-radius: 50px; padding: 2px 8px; vertical-align: middle; white-space: nowrap; }
.gym-import-sit.ok { background: rgba(180, 181, 54, 0.18); color: #5c5e00; }
.gym-import-sit.amb { background: #fff3ec; color: #d45800; }
.gym-import-sit.no { background: rgba(232, 71, 63, 0.12); color: #e8473f; }

/* ── Overlay de encerramento (fogos) ── */
.gym-fogos-overlay { position: fixed; inset: 0; z-index: 1200; display: flex; align-items: center; justify-content: center; background: rgba(43, 35, 24, 0.6); }
.gym-fogos-canvas { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.gym-fogos-card { position: relative; background: #fff; border-radius: 22px; padding: 30px 34px; max-width: 420px; width: 90%; text-align: center; box-shadow: 0 12px 40px rgba(0, 0, 0, 0.3); }
.gym-fogos-emoji { font-size: 44px; margin-bottom: 8px; }
.gym-fogos-linha { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 0; border-top: 1px solid rgba(132, 153, 183, 0.14); font-size: 13.5px; color: var(--color-text); }
.gym-fogos-linha:first-of-type { border-top: none; }
