* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

/* ===== BARRA SUPERIOR (fixa no scroll) ===== */
.topo-barra {
    position: sticky;
    top: 0;
    z-index: 200;

    background: #2d0b5f;
    color: white;

    padding: 14px 40px;

    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;

    box-shadow: 0 4px 14px rgba(0,0,0,.18);
}

.topo-acoes {
    display: flex;
    align-items: center;
    gap: 14px;
}

/* Mini card "recomendar pra mim" e botão "Como funciona?" na barra superior */
.mini-recomendacao,
.mini-como-funciona {
    display: flex;
    align-items: center;
    gap: 10px;

    background: rgba(255,255,255,.12);
    padding: 6px 16px 6px 6px;
    border-radius: 999px;

    border: none;
    text-decoration: none;
    color: white;
    cursor: pointer;

    transition: .2s;
}

.mini-recomendacao:hover,
.mini-como-funciona:hover {
    background: rgba(255,255,255,.22);
}

.mini-recomendacao img {
    width: 40px;
    height: auto;
}

.mini-recomendacao span,
.texto-como-funciona {
    font-size: .85rem;
    font-weight: 700;
    white-space: nowrap;
}

.icone-como-funciona {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;

    width: 40px;
    height: 40px;
    border-radius: 50%;

    background: #F6C453;
    color: #2d0b5f;

    font-size: 1.3rem;
    font-weight: 900;
}

/* Ícone de seta do "Voltar ao catálogo" (destaques_loja.php) — precisa
   continuar visível no mobile mesmo com o texto escondido, senão o
   botão vira uma bolinha vazia ao lado do carrinho. */
.icone-voltar-catalogo {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;

    width: 40px;
    height: 40px;
    border-radius: 50%;

    background: #F6C453;
    color: #2d0b5f;

    font-size: 1.3rem;
    font-weight: 900;
}

/* Ícone do carrinho na barra superior */
.btn-carrinho-topo {
    position: relative;

    width: 44px;
    height: 44px;
    flex-shrink: 0;

    display: flex;
    align-items: center;
    justify-content: center;

    background: rgba(255,255,255,.12);
    border: none;
    border-radius: 50%;

    font-size: 1.3rem;
    cursor: pointer;
    transition: .2s;
}

.btn-carrinho-topo:hover {
    background: rgba(255,255,255,.22);
}

.carrinho-badge {
    position: absolute;
    top: -4px;
    right: -4px;

    background: #F6C453;
    color: #2d0b5f;

    font-size: .68rem;
    font-weight: 900;

    min-width: 19px;
    height: 19px;
    padding: 0 4px;
    border-radius: 999px;

    display: none;
    align-items: center;
    justify-content: center;

    box-shadow: 0 2px 6px rgba(0,0,0,.25);
}

body {
    font-family: Arial, Helvetica, sans-serif;
    background: #FAF7F3;
    color: #2b1b12;
}

/* ===== BANNER "Formiguinha recomenda" (somente index.php) ===== */
.catalogo-topo-wrap {
    background: #5B3A9E;
    padding: 28px 40px 90px;
}

.catalogo-topo {
    max-width: 1400px;
    margin: 0 auto;

    background: linear-gradient(135deg, #2d0b5f, #4b1a8d, #7C3AED);
    color: white;

    border-radius: 28px;
    box-shadow: 0 20px 45px rgba(0,0,0,.28);

    padding: 44px 60px;

    display: flex;
    align-items: center;
    gap: 46px;
}

.banner-formiguinha-img {
    width: 320px;
    height: auto;
    flex-shrink: 0;
    filter: drop-shadow(0 14px 24px rgba(0,0,0,.3));
}

.banner-texto {
    display: flex;
    flex-direction: column;
    gap: 14px;
    min-width: 0;
    flex: 1 1 auto;
}

.banner-label {
    color: #F6C453;
    font-weight: 900;
    letter-spacing: 1.5px;
    font-size: .85rem;
}

.banner-texto h2 {
    font-size: 2.1rem;
    line-height: 1.25;
    font-weight: 900;
}

.banner-texto h2 .destaque {
    color: #F6C453;
}

.btn-recomendar-banner {
    align-self: flex-start;
    margin-top: 6px;

    background: linear-gradient(135deg, #F9D57C, #F0AE30);
    color: #2b1b12;

    padding: 15px 30px;
    border-radius: 999px;

    text-decoration: none;
    font-weight: 900;
    letter-spacing: .3px;

    box-shadow: 0 10px 22px rgba(0,0,0,.22);
    transition: transform .2s ease, box-shadow .2s ease, filter .2s ease;
}

.btn-recomendar-banner:hover {
    transform: translateY(-3px);
    box-shadow: 0 14px 28px rgba(0,0,0,.28);
    filter: brightness(1.04);
}

.btn-recomendar-banner:active {
    transform: translateY(-1px);
    filter: brightness(.98);
}

.whatsapp-flutuante {
    position: fixed;
    right: 20px;
    bottom: 4px;

    z-index: 9999;

    transition: .3s;
}

.whatsapp-flutuante:hover {
    transform: scale(1.05);
}

.whatsapp-flutuante::after {
    content: "";

    position: absolute;

    bottom: 35px;
    left: 50%;

    transform: translateX(-50%);

    width: 70%;
    height: 18px;

    background: rgba(0, 0, 0, 0.25);

    border-radius: 50%;

    filter: blur(10px);

    z-index: -1;
}

.whatsapp-flutuante img {
    width: 150px;
    height: auto;
    display: block;
}

.icone-whatsapp {
    font-size: 1.4rem;
}

/* Botão flutuante "voltar ao topo" — mesmo visual/comportamento em
   desktop e mobile (antes só aparecia no mobile). */
.btn-voltar-topo {
    display: flex;
    align-items: center;
    justify-content: center;

    position: fixed;
    left: 14px;
    bottom: 14px;
    z-index: 9999;

    width: 46px;
    height: 46px;
    border-radius: 50%;
    border: none;

    background: #F6C453;
    color: #2d0b5f;
    font-size: 1.2rem;
    font-weight: 900;

    box-shadow: 0 6px 16px rgba(0,0,0,.25);
    cursor: pointer;

    opacity: 0;
    transform: translateY(10px);
    pointer-events: none;
    transition: opacity .25s, transform .25s;
}

.btn-voltar-topo.visivel {
    opacity: 1;
    transform: translateY(0);
    pointer-events: auto;
}

/* ===== CARROSSÉIS (novidades / destaques da loja) ===== */
.secao-carrossel {
    width: 100%;
    padding: 30px 0 24px;
}

.secao-carrossel-novidades {
    background: #F6F2FA;
}

.secao-carrossel-destaques {
    background: #FBF4E8;
}

.secao-carrossel-inner {
    max-width: 1500px;
    margin: 0 auto;
    padding: 0 30px;
}

.cabecalho-carrossel {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 18px;
}

/* Link "Ver mais" pra destaques_loja.php, alinhado à direita do cabeçalho
   (mesma linha do título "Recomendações da loja"), em cima do carrossel. */
.link-ver-mais-destaques {
    margin-left: auto;
    background: linear-gradient(135deg, #9333EA, #7C3AED);
    color: #fff;
    padding: 10px 20px;
    border-radius: 12px;
    font-weight: bold;
    font-size: .92rem;
    text-decoration: none;
    white-space: nowrap;
    transition: .25s;
}

.link-ver-mais-destaques:hover {
    transform: translateY(-2px);
}

.cabecalho-todos-jogos {
    display: flex;
    align-items: center;
    gap: 14px;
    max-width: 1500px;
    margin: 30px auto 18px;
    padding: 0 30px;
}

.icone-secao {
    flex-shrink: 0;
    width: 46px;
    height: 46px;
    border-radius: 14px;
    background: linear-gradient(135deg, #2d0b5f, #7C3AED);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.35rem;
    box-shadow: 0 6px 14px rgba(45,11,95,.25);
}

.titulo-carrossel {
    color: #2d0b5f;
    font-size: 1.4rem;
}

.subtitulo-carrossel {
    color: #6b5f57;
    font-size: .95rem;
    margin-top: 4px;
}

.carrossel-wrap {
    position: relative;
    display: flex;
    align-items: center;
    gap: 10px;
}

.carrossel-trilha {
    display: flex;
    gap: 18px;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    scroll-behavior: smooth;
    padding: 4px 4px 12px;
    flex: 1;

    scrollbar-width: none;
    -ms-overflow-style: none;
}

.carrossel-trilha::-webkit-scrollbar {
    display: none;
}

.carrossel-trilha .card-jogo {
    min-width: 190px;
    max-width: 190px;
    scroll-snap-align: start;
}

.carrossel-trilha .imagem-card {
    height: 150px;
}

.carrossel-trilha .conteudo-card {
    padding: 14px;
}

.carrossel-trilha .conteudo-card h2 {
    font-size: 17px;
    margin-bottom: 8px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Descrição curta, com no máximo 2 linhas (corta com "...") — evita o
   card esticar demais quando a descrição é longa. Sem altura mínima:
   descrição de 1 linha não deixa vão vazio, e o rodapé (infos + preço)
   continua alinhado entre os cards da fileira porque o carrossel estica
   todo mundo pra altura do maior card (.infos-card tem margin-top:auto). */
.carrossel-trilha .descricao-card {
    font-size: 12.5px;
    line-height: 1.4;
    margin-bottom: 10px;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    /* .conteudo-card é flex column — sem isso, o item flex cresce pra
       caber todo o texto (min-height:auto do flexbox) e o corte de 2
       linhas não tem efeito nenhum, só aparece a "…" no meio do texto. */
    min-height: 0;
}

.carrossel-trilha .infos-card {
    font-size: 12px;
    gap: 8px;
    margin-bottom: 12px;
}

.carrossel-trilha .btn-escolher {
    padding: 8px 12px;
    font-size: 13px;
    width: 100%;
}

/* Card do carrossel é estreito demais pra riscado + preço novo + selo
   dividir a mesma linha com o botão "Escolher" — empilha o preço em cima
   e deixa o botão sozinho embaixo, do jeito que já era antes da promoção. */
.carrossel-trilha .rodape-card {
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
}

.carrossel-trilha .selo-promocao {
    font-size: .62rem;
    padding: 2px 7px;
}

.carrossel-trilha .preco-riscado {
    font-size: .78em;
}

.selo-novo {
    position: absolute;
    bottom: 10px;
    left: 10px;
    z-index: 2;

    display: flex;
    align-items: center;
    gap: 4px;

    background: linear-gradient(135deg, #F9D57C, #F0AE30);
    color: #2b1b12;
    font-size: .68rem;
    font-weight: 900;
    letter-spacing: .4px;
    padding: 5px 11px 5px 8px;
    border-radius: 999px;
    box-shadow: 0 4px 10px rgba(0,0,0,.2);
    transform: rotate(-4deg);
}

.selo-novo::before {
    content: "✨";
    font-size: .78rem;
}

.carrossel-nav {
    flex-shrink: 0;
    width: 42px;
    height: 42px;
    border-radius: 50%;
    border: none;
    background: white;
    color: #7C3AED;
    font-size: 1.4rem;
    box-shadow: 0 6px 16px rgba(0,0,0,.15);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: .2s;
}

.carrossel-nav:hover {
    background: #7C3AED;
    color: white;
}

.filtros-catalogo {
    position: sticky;
    top: 72px;
    z-index: 150;

    background: #fff;

    max-width: 1300px;

    margin: -35px auto 30px;

    padding: 22px;

    border-radius: 24px;

    box-shadow: 0 12px 35px rgba(0,0,0,.12);

    display: flex;
    align-items: center;
    gap: 24px;
    flex-wrap: wrap;
}

.filtros-catalogo > input {
    width: 300px;
    padding: 14px;
    border-radius: 12px;
    border: 1px solid #ddd;
    font-size: 16px;
}

.filtros-catalogo > div {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.filtros-catalogo > div div {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}

/* destaques_loja.php não tem o banner da Formiguinha antes da barra de
   filtros (só index.php tem), então a margem negativa que sobrepõe o
   banner aqui empurraria a barra pra debaixo do header sticky. */
.pagina-destaques .filtros-catalogo {
    margin-top: 24px;
}

.filtros-catalogo strong {
    font-size: 14px;
    color: #2b1b12;
}

.filtros-catalogo label {
    display: flex;
    align-items: center;
    gap: 4px;
    cursor: pointer;
    white-space: nowrap;
    font-size: 14px;
}

.filtros-catalogo input[type="checkbox"] {
    accent-color: #7C3AED;
}

#limpar-filtros {
    background: #F6C453;
    color: #2b1b12;
    border: none;
    padding: 12px 16px;
    border-radius: 12px;
    font-weight: bold;
    cursor: pointer;
}

.grupo-filtro {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.opcoes-filtro {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
}

.filtro-idade-select,
.filtro-jogadores-select {
    padding: 10px 12px;
    border-radius: 12px;
    border: 1px solid #ddd;
    /* 16px é o mínimo que evita o zoom automático do Safari/iOS ao focar o campo. */
    font-size: 16px;
    color: #2b1b12;
    background: #fff;
    cursor: pointer;
}

.grid-jogos {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 24px;

    max-width: 1500px; /* ajuste conforme gostar */
    margin: 0 auto; /* centraliza */
    padding: 0 30px; /* espaçamento nas laterais */
}

.card-jogo {
    background: white;
    border-radius: 16px;
    overflow: hidden;
    box-shadow: 0 6px 18px rgba(0,0,0,0.08);
    cursor: pointer;
    position: relative;
    display: flex;
    flex-direction: column;
}

.card-jogo::after {
    content: "Clique para ver mais informações";
    position: absolute;
    top: 12px;
    left: 50%;
    transform: translateX(-50%);

    background: rgba(45, 11, 95, 0.92);    
    color: #fff;
    padding: 8px 12px;
    border-radius: 999px;

    font-size: 12px;
    font-weight: bold;
    white-space: nowrap;

    opacity: 0;
    pointer-events: none;
    transition: 0.25s;
}

.card-jogo:hover::after {
    opacity: 1;
}

.imagem-card {
    position: relative;
    height: 210px;
    background: #eee;
}

.imagem-card img {
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: #fff;
}

.conteudo-card {
    padding: 18px;
    display: flex;
    flex-direction: column;
    flex: 1;
}

.conteudo-card h2 {
    font-size: 22px;
    margin-bottom: 10px;
}

.descricao-card {
    color: #5f5148;
    line-height: 1.4;
    min-height: 60px;
    margin-bottom: 16px;
}

.infos-card {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    font-size: 14px;
    margin-bottom: 18px;
    margin-top: auto;
    color: #555;
}

.rodape-card {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 12px;
}

.bloco-preco {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.preco-riscado {
    text-decoration: line-through;
    color: #999;
    font-size: .85em;
}

.selo-promocao {
    display: inline-block;
    background: #F6C453;
    color: #2b1b12;
    font-weight: 900;
    font-size: .72rem;
    padding: 3px 9px;
    border-radius: 999px;
    white-space: nowrap;
}

.btn-escolher {
    background: #6b8e23;
    color: white;
    border: none;
    padding: 10px 14px;
    border-radius: 8px;
    cursor: pointer;
    font-weight: bold;
}

.btn-escolher.selecionado {
    background: #2d3a22;
}

/* Wrapper do "Selecionar jogo" no modal de detalhes. */
.acoes-modal-jogo {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 10px;
}

.acoes-modal-jogo > button {
    flex: 1 1 200px;
}

/* Linha com "Ver mais sobre o jogo" + ícone de compartilhar, lado a lado
   (o ícone continua aparecendo mesmo em jogos sem link da Ludopedia). */
.linha-secundaria-modal {
    display: flex;
    align-items: center;
    gap: 10px;
}

.btn-compartilhar-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    flex-shrink: 0;
    background: none;
    border: none;
    color: #2d0b5f;
    cursor: pointer;
    padding: 0;
    opacity: 0.75;
    transition: opacity 0.2s;
}

/* Só o primeiro ícone da fileira empurra o grupo pra direita — com
   margin-left:auto nos dois, o espaço livre se dividia entre eles e
   abria um buraco no meio, em vez dos dois ficarem juntos coladinhos. */
#modal-copiar-link {
    margin-left: auto;
}

.btn-compartilhar-icone:hover {
    opacity: 1;
}

.btn-compartilhar-icone svg {
    width: 24px;
    height: 24px;
}

.info-topo {
    display: flex;
    align-items: center;
    gap: 16px;
}

.logo-topo {
    width: 46px;
    height: auto;
}

.texto-topo {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.titulo-catalogo {
    font-size: 1.3rem;
    font-weight: 900;
    letter-spacing: 1px;
    color: #F6C453;
}

.texto-topo p {
    color: rgba(255,255,255,.85);
    font-size: .78rem;
}

@media (max-width: 900px) {

    .secao-carrossel {
        padding: 18px 0 14px;
    }

    .secao-carrossel-inner {
        padding: 0 14px;
    }

    .cabecalho-todos-jogos {
        padding: 0 14px;
    }

    .cabecalho-carrossel {
        flex-wrap: wrap;
    }

    /* No mobile, o botão "Ver mais" fica na mesma linha do ícone (👍),
       e o bloco de título/subtítulo desce pra linha de baixo, ocupando
       a largura toda. */
    .icone-secao {
        order: 1;
    }

    .link-ver-mais-destaques {
        order: 2;
        margin-top: 0;
    }

    .cabecalho-carrossel > div {
        order: 3;
        width: 100%;
    }

    .icone-secao {
        width: 38px;
        height: 38px;
        font-size: 1.1rem;
        border-radius: 11px;
    }

    .titulo-carrossel {
        font-size: 1.1rem;
    }

    .carrossel-trilha {
        gap: 10px;
    }

    .carrossel-trilha .card-jogo {
        min-width: 138px;
        max-width: 138px;
    }

    .carrossel-trilha .imagem-card {
        height: 90px;
    }

    .carrossel-trilha .conteudo-card {
        padding: 8px;
    }

    .carrossel-trilha .conteudo-card h2 {
        font-size: 12px;
        margin-bottom: 4px;
    }

    .carrossel-trilha .descricao-card {
        font-size: 9.5px;
        margin-bottom: 6px;
    }

    .carrossel-trilha .infos-card {
        font-size: 9px;
        gap: 4px;
        margin-bottom: 6px;
    }

    .carrossel-trilha .btn-escolher {
        padding: 6px 8px;
        font-size: 10px;
    }

    /* No celular o toque já arrasta o carrossel (scroll-snap nativo) —
       as setinhas só tomavam espaço horizontal que os cards precisavam. */
    .carrossel-nav {
        display: none;
    }

    .whatsapp-flutuante {
        right: 10px;
        bottom: 10px;
    }

    .whatsapp-flutuante img {
        width: 58px;
    }

    .topo-barra {
        padding: 10px 16px;
        gap: 10px;
    }

    .mini-recomendacao span:not(.icone-voltar-catalogo),
    .texto-como-funciona {
        display: none;
    }

    .mini-recomendacao,
    .mini-como-funciona {
        padding: 4px;
    }

    .mini-recomendacao img {
        width: 32px;
    }

    .icone-como-funciona,
    .icone-voltar-catalogo {
        width: 32px;
        height: 32px;
        font-size: 1rem;
    }

    .btn-carrinho-topo {
        width: 38px;
        height: 38px;
        font-size: 1.1rem;
    }

    .info-topo {
        flex-wrap: nowrap;
        align-items: center;
        gap: 10px;
        min-width: 0;
    }

    .logo-topo {
        width: 34px;
        flex-shrink: 0;
    }

    .texto-topo {
        min-width: 0;
    }

    .titulo-catalogo {
        font-size: 0.95rem;
        letter-spacing: .5px;
        overflow-wrap: break-word;
    }

    .texto-topo p {
        display: none;
    }

    .catalogo-topo-wrap {
        padding: 20px 14px 60px;
    }

    .catalogo-topo {
        padding: 20px 16px;
        border-radius: 22px;
        align-items: center;
        gap: 16px;
    }

    .banner-formiguinha-img {
        width: 210px;
        flex-shrink: 0;
    }

    .banner-texto {
        min-width: 0;
        gap: 8px;
    }

    .banner-label {
        font-size: .64rem;
    }

    .banner-texto h2 {
        font-size: 1rem;
        line-height: 1.2;
    }

    .btn-recomendar-banner {
        align-self: stretch;
        text-align: center;
        padding: 12px 18px;
        font-size: .85rem;
    }

    .filtros-catalogo {
        position: static;
        margin: -25px 16px 30px;
        padding: 18px;
        gap: 16px;
    }

    .pagina-destaques .filtros-catalogo {
        margin-top: 20px;
    }

    .filtros-catalogo > input {
        width: 100%;
    }

    .grupo-filtro,
    .filtros-catalogo > div {
        width: 100%;
    }

    .filtros-catalogo strong {
        font-size: 15px;
    }

    .filtros-catalogo label {
        font-size: 15px;
        padding: 6px 0;
    }

    #limpar-filtros {
        width: 100%;
        padding: 14px 16px;
        font-size: 16px;
    }

    .grid-jogos {
        grid-template-columns: repeat(2, 1fr);
        gap: 12px;
        padding: 0 14px;
        padding-bottom: 90px;
    }

    .imagem-card {
        height: 120px;
    }

    .conteudo-card {
        padding: 10px;
    }

    .conteudo-card h2 {
        font-size: 14px;
        margin-bottom: 6px;
    }

    .descricao-card {
        font-size: 12px;
        line-height: 1.35;
        min-height: 0;
        margin-bottom: 8px;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }

    .infos-card {
        font-size: 10px;
        gap: 6px;
        margin-bottom: 10px;
    }

    .rodape-card {
        flex-direction: column;
        align-items: stretch;
        gap: 8px;
    }

    .rodape-card strong {
        font-size: 14px;
    }

    .preco-riscado {
        font-size: 12px;
    }

    .btn-escolher {
        width: 100%;
        padding: 8px;
        font-size: 13px;
    }

    .card-jogo::after {
        display: none;
    }

}

/* modal pedido */
.modal {
    display: none;
    position: fixed;
    inset: 0;
    z-index: 99999;
    justify-content: center;
    padding: 20px;

    /* O scroll (quando o conteúdo é mais alto que a tela) acontece aqui, na
       camada de fundo inteira — não mais dentro do .modal-conteudo. Antes,
       o fundo desfocado do card (::before logo abaixo) ficava num
       position:absolute dentro do próprio .modal-conteudo com overflow-y,
       e por isso "subia" junto com o scroll do conteúdo, descolando do
       card e expondo o catálogo por trás perto do fim (ex: depois de
       escolher a data de retirada, quando o conteúdo cresce). Com o scroll
       na tela toda, o card e o fundo escuro andam juntos sempre. */
    overflow-y: auto;
    /* Sem isso, quando o scroll do modal chega ao fim, o restante do gesto
       "vaza" pra página de catálogo por trás, rolando ela também. */
    overscroll-behavior: contain;

    scrollbar-width: thin;
    scrollbar-color: #C9B8F0 transparent;
}

.modal::-webkit-scrollbar {
    width: 10px;
}

.modal::-webkit-scrollbar-track {
    background: transparent;
}

.modal::-webkit-scrollbar-thumb {
    background: #C9B8F0;
    border-radius: 999px;
    border: 2px solid transparent;
    background-clip: padding-box;
}

.modal::-webkit-scrollbar-thumb:hover {
    background: #7C3AED;
    background-clip: padding-box;
}

/* Mesma razão do ::before em .modal-conteudo logo abaixo: o .modal também
   é ancestral do <input type="date"> (dentro de .modal-conteudo), então o
   backdrop-filter direto nele sozinho já bastava pra quebrar a aparência
   nativa do campo no iOS — isolar aqui também era necessário.
   position:fixed (não absolute) pra cobrir sempre a tela inteira, já que
   agora é o próprio .modal que rola (ver comentário acima). */
.modal::before {
    content: "";
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.45);
    backdrop-filter: blur(5px);
    z-index: -1;
}

.modal.ativo {
    display: flex;
}

.modal-conteudo {
    width: 100%;
    position: relative;

    /* Centraliza verticalmente sem o bug clássico do flexbox
       (align-items:center + overflow): com align-items:center, quando o
       conteúdo fica mais alto que a tela, WebKit corta o acesso por scroll
       à parte de cima. Margem automática centraliza do mesmo jeito quando
       cabe, mas sem esse corte quando não cabe. */
    margin: auto 0;
}

/* Modal de detalhes do jogo */
#modal-jogo .modal-conteudo {
    max-width: 850px;
    display: grid;
    grid-template-columns: 280px 1fr;
    gap: 24px;
}

/* Modal de conferência do pedido */
#modal-pedido .modal-conteudo {
    max-width: 620px;
    display: block;
}

/* Modal "Como funciona a locação?" */
#modal-como-funciona .modal-conteudo {
    max-width: 900px;
    display: block;
}

.modal-conteudo img {
    width: 100%;
    max-height: 360px;
    object-fit: contain;
    background: #FAF7F3;
    border-radius: 14px;
}

.modal-infos {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin: 18px 0;
}

.acoes-modal {
    display: flex;
    gap: 12px;
    margin-top: 24px;
}

#modal-pedido .modal-conteudo,
#modal-jogo .modal-conteudo,
#modal-como-funciona .modal-conteudo {
    border: 1px solid rgba(255,255,255,0.4);

    border-radius: 28px;

    box-shadow:
        0 25px 50px rgba(0,0,0,.15);

    padding: 32px;
}

/* O fundo desfocado precisa ficar num pseudo-elemento por trás do conteúdo,
   não como background/backdrop-filter direto no .modal-conteudo — no
   iOS/WebKit, um <input type="date"> dentro de um ancestral com
   backdrop-filter perde a aparência nativa (some o "dd/mm/aaaa" e o ícone
   do calendário, sobra só um retângulo cinza vazio). Isolando o blur aqui,
   o campo volta a renderizar normal, com o mesmo visual de antes. */
#modal-pedido .modal-conteudo::before,
#modal-jogo .modal-conteudo::before,
#modal-como-funciona .modal-conteudo::before {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(255,255,255,0.96);
    backdrop-filter: blur(10px);
    border-radius: inherit;
    z-index: -1;
}

#modal-pedido h2,
#modal-jogo h2,
#modal-como-funciona h2,
#modal-termos h2 {
    color: #2d0b5f;
    font-size: 2rem;
    margin-bottom: 8px;
}

#modal-pedido p,
#modal-jogo p,
#modal-como-funciona p,
#modal-termos p {
    color: #5f5148;
    line-height: 1.6;
}

.destaque-valor-total {
    background: #FBF4E8;
    border: 1px solid #F0E4D0;
    border-radius: 14px;
    padding: 14px 18px;
    margin: 16px 0 24px;
    font-weight: 700;
}

.grade-como-funciona {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
}

.card-como-funciona {
    background: #F5F1FF;
    border-radius: 18px;
    padding: 20px;
}

.icone-card-funciona {
    display: block;
    font-size: 1.8rem;
    margin-bottom: 10px;
}

.card-como-funciona h3 {
    color: #2d0b5f;
    font-size: 1.05rem;
    margin-bottom: 8px;
}

.card-como-funciona p {
    font-size: .88rem;
}

.card-como-funciona p + p {
    margin-top: 10px;
}

.lista-como-funciona {
    list-style: none;
    margin: 12px 0 0;
    padding: 0;

    display: flex;
    flex-direction: column;
    gap: 8px;
}

.lista-como-funciona li {
    font-size: .88rem;
    color: #5f5148;
    line-height: 1.5;
}

#modal-pedido .acoes-modal {
    display: flex;
    justify-content: flex-end;
    gap: 12px;
    margin-top: 24px;
}

#modal-pedido .acoes-modal button {
    border: none;
    padding: 13px 18px;
    border-radius: 14px;
    font-weight: 800;
    cursor: pointer;
    transition: .2s;
}

#continuar-escolhendo {
    background: #F5F1FF;
    color: #7C3AED;
}

#confirmar-whatsapp {
    background: linear-gradient(135deg, #25D366, #1fae56);
    color: #fff;
    box-shadow: 0 8px 18px rgba(37, 211, 102, .25);
}

#modal-pedido .acoes-modal button:hover {
    transform: translateY(-2px);
}

.fechar-modal {
    position: absolute;
    top: 16px;
    right: 16px;
    z-index: 20;

    width: 42px;
    height: 42px;

    border-radius: 50%;
    border: none;

    background: #F5F1FF;

    color: #7C3AED;

    display: flex;
    justify-content: center;
    align-items: center;

    transition: .2s;
}

.fechar-modal:hover {
    background: #7C3AED;
    color: white;
}

.item-pedido {
    background: white;

    border: 1px solid #EEE;

    border-radius: 16px;

    padding: 16px 18px;

    box-shadow:
        0 4px 10px rgba(0,0,0,.04);

    transition: .2s;

    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.btn-remover-item {
    flex-shrink: 0;

    width: 30px;
    height: 30px;

    border-radius: 50%;
    border: none;

    background: #FDECEF;
    color: #D64550;

    font-size: 1.1rem;
    line-height: 1;

    display: flex;
    align-items: center;
    justify-content: center;

    cursor: pointer;
    transition: .2s;
}

.btn-remover-item:hover {
    background: #D64550;
    color: white;
}

.item-pedido:hover {
    transform: translateY(-2px);
}

.area-cupom {
    display: flex;
    gap: 8px;
    margin-top: 18px;
}

.area-cupom input {
    flex: 1;
    padding: 12px 14px;
    border-radius: 12px;
    border: 1px solid #ddd;
    /* 16px é o mínimo que evita o zoom automático do Safari/iOS ao focar o campo. */
    font-size: 16px;
    text-transform: uppercase;
}

.area-cupom button {
    background: #7C3AED;
    color: white;
    border: none;
    padding: 12px 18px;
    border-radius: 12px;
    font-weight: 800;
    cursor: pointer;
}

.status-cupom {
    margin-top: 8px;
    font-size: .9rem;
}

.status-cupom.status-cupom-erro {
    color: #C62828;
}

.status-cupom.status-cupom-sucesso {
    color: #147A32;
}

.linha-desconto-pedido {
    margin-top: 12px;
    color: #147A32;
    font-weight: 700;
    text-align: center;
}

.area-data-locacao {
    margin-top: 18px;
}

.area-data-locacao label {
    display: block;
    font-weight: 700;
    margin-bottom: 8px;
}

.area-data-locacao input[type="date"] {
    width: 100%;
    padding: 9px 14px;
    border-radius: 12px;
    border: 1px solid #ddd;
    /* 16px é o mínimo que evita o zoom automático do Safari/iOS ao focar o campo. */
    font-size: 16px;
}

.erro-data-locacao {
    margin-top: 8px;
    font-size: .9rem;
    color: #C62828;
}

.periodo-locacao {
    margin-top: 10px;
    padding: 12px 14px;
    background: #F5F1FF;
    border-radius: 12px;
    color: #2d0b5f;
    font-weight: 700;
    text-align: center;
}

.aviso-sabado-locacao {
    margin-top: 10px;
    padding: 12px 14px;
    background: #FFF4DE;
    border: 1px solid #F6C453;
    border-radius: 12px;
    color: #7a5c00;
    font-weight: 600;
    font-size: .9rem;
}

/* Tipo de cliente (já é cliente / cliente novo) + cadastro no modal do pedido */
.area-tipo-cliente {
    margin-top: 28px;
    padding-top: 18px;
    border-top: 1px solid #eee;
}

.area-tipo-cliente strong {
    display: block;
    margin-bottom: 10px;
    color: #2b1b12;
}

.linha-radios {
    display: flex;
    flex-wrap: wrap;
    gap: 22px;
}

.opcao-radio {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 700;
    color: #2b1b12;
}

.opcao-radio input {
    width: auto;
}

.campos-cliente-novo {
    margin-top: 18px;
    padding-top: 18px;
    border-top: 1px solid #eee;
}

.link-voltar-pedido {
    display: inline-block;
    margin-bottom: 14px;
    color: #7C3AED;
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
}

.link-voltar-pedido:hover {
    text-decoration: underline;
}

.campos-cliente-novo .campo {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 14px;
}

.campos-cliente-novo .campo label {
    font-weight: 700;
    font-size: .9rem;
    color: #2b1b12;
}

.campos-cliente-novo .campo input[type="text"] {
    padding: 12px 14px;
    border-radius: 12px;
    border: 1px solid #ddd;
    /* 16px é o mínimo que evita o zoom automático do Safari/iOS ao focar o campo. */
    font-size: 16px;
}

.linha-numero-bairro {
    display: grid;
    grid-template-columns: 90px 1fr;
    gap: 12px;
}

.linha-numero-bairro .campo {
    min-width: 0;
}

.campo-checkbox {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}

.campo-checkbox input {
    width: auto;
    margin-top: 4px;
}

.campo-checkbox label {
    margin: 0;
    font-weight: 600;
    color: #2b1b12;
}

.campo-checkbox a {
    color: #7C3AED;
    font-weight: 700;
}

/* Enquanto a pessoa não abre os termos de uso pelo menos uma vez, a
   caixinha de aceite fica travada (ver assets/js/carrinho.js) — esse estilo
   deixa isso visualmente claro. */
.campo-checkbox input:disabled {
    cursor: not-allowed;
}

.campo-checkbox input:disabled ~ label {
    opacity: .55;
}

#confirmar-whatsapp:disabled {
    opacity: .5;
    cursor: not-allowed;
    box-shadow: none;
}

#modal-pedido .acoes-modal button:disabled:hover {
    transform: none;
}

/* Modal de termos de uso — abre por cima do modal do pedido, então precisa
   de um z-index explícito maior em vez de depender da ordem no DOM. */
#modal-termos {
    z-index: 100000;
}

#modal-termos .modal-conteudo {
    max-width: 700px;
    display: block;
    border-radius: 28px;

    background: #F3EEFE;
    border: 2px solid #7C3AED;

    box-shadow:
        0 0 0 1px rgba(124, 58, 237, .25),
        0 0 26px rgba(124, 58, 237, .45),
        0 25px 50px rgba(0,0,0,.2);

    padding: 32px;
}

/* Checkbox de confirmação no fim do contrato — separada do texto por uma
   linha, pra ficar claro que é a ação de "terminei de ler". */
.campo-checkbox-termos-fim {
    margin-top: 24px;
    padding-top: 18px;
    border-top: 1px solid rgba(124, 58, 237, .25);
}

#texto-termos .termos-titulo-contrato {
    font-weight: 800;
    text-align: center;
    color: #2d0b5f;
    margin-bottom: 18px;
}

#texto-termos h3 {
    color: #2d0b5f;
    font-size: 1.05rem;
    margin: 22px 0 8px;
}

#texto-termos p {
    margin-bottom: 10px;
}

#texto-termos .lista-termos {
    margin: 0 0 10px;
    padding-left: 22px;
}

#texto-termos .lista-termos li {
    color: #5f5148;
    line-height: 1.6;
    margin-bottom: 4px;
}

#total-pedido {
    display: block;

    margin-top: 24px;
    padding: 18px;

    background: linear-gradient(
        135deg,
        #7C3AED,
        #9333EA
    );

    color: white;

    border-radius: 18px;

    text-align: center;

    font-size: 1.2rem;
    font-weight: bold;
}

.acoes-modal {
    margin-top: 24px;
    justify-content: flex-end;
}

#continuar-escolhendo {
    background: transparent;
    color: #7C3AED;
    border: 2px solid #E9DFFF;
}

#confirmar-whatsapp {
    background: linear-gradient(
        135deg,
        #25D366,
        #1fae56
    );

    color: white;
}

/* Celular estreito: o banner "Formiguinha recomenda" ficava com a
   formiguinha e o texto lado a lado até em telas bem pequenas, sobrando
   pouco espaço pro botão — o texto quebrava linha e o formato arredondado
   (999px) ficava distorcido, meio "balão furado". Empilha tudo em vez de
   manter lado a lado. */
@media (max-width: 480px) {
    .catalogo-topo {
        flex-direction: column;
        text-align: center;
        gap: 14px;
        padding: 24px 18px;
    }

    .banner-formiguinha-img {
        width: 150px;
        margin: 0 auto;
    }

    .banner-texto {
        align-items: center;
    }

    .btn-recomendar-banner {
        align-self: center;
        width: 100%;
        max-width: 280px;
    }
}

@media (max-width: 700px) {
    .modal-conteudo {
        grid-template-columns: 1fr;
    }

    .grade-como-funciona {
        grid-template-columns: 1fr;
    }
}

/* Ajuste final - modal de detalhes do jogo */
#modal-jogo .modal-conteudo {
    max-width: 900px;
    width: 100%;
    display: grid !important;
    grid-template-columns: 300px 1fr !important;
    gap: 28px;
    align-items: start;
}

#modal-jogo .modal-conteudo img {
    width: 100%;
    max-height: 380px;
    object-fit: contain;
}

#modal-jogo .modal-conteudo > .modal-imagem-area {
    grid-column: 1;
    position: relative;
}

#modal-jogo .modal-conteudo > div {
    grid-column: 2;
}

.modal-imagem-nav {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);

    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: none;

    background: rgba(45, 11, 95, 0.75);
    color: white;
    font-size: 1.4rem;
    line-height: 1;

    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: .2s;
}

.modal-imagem-nav:hover {
    background: rgba(45, 11, 95, 0.95);
}

.modal-imagem-nav-esquerda {
    left: 10px;
}

.modal-imagem-nav-direita {
    right: 10px;
}

.modal-imagem-contador {
    position: absolute;
    bottom: 10px;
    left: 50%;
    transform: translateX(-50%);

    background: rgba(45, 11, 95, 0.75);
    color: white;
    font-size: .75rem;
    font-weight: 700;
    padding: 4px 10px;
    border-radius: 999px;
}

/* Modal do pedido continua em uma coluna */
#modal-pedido .modal-conteudo {
    max-width: 620px;
    display: block !important;
}

@media (max-width: 700px) {
    #modal-jogo .modal-conteudo {
        grid-template-columns: 1fr !important;
    }

    #modal-jogo .modal-conteudo img,
    .modal-imagem-area,
    #modal-jogo .modal-conteudo > div {
        grid-column: auto;
    }
}

#overlay-carregando {
    position: fixed;
    top: 0; left: 0; right: 0; bottom: 0;
    background: rgba(0,0,0,0.6);
    z-index: 9999;
    display: flex;
    align-items: center;
    justify-content: center;
}

.modal-carregando {
    background: #fff;
    border-radius: 16px;
    padding: 32px 40px;
    text-align: center;
    max-width: 320px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.3);
}

.gif-formiguinha {
    width: 140px;
    margin-bottom: 16px;
}

.modal-carregando p {
    font-size: 1rem;
    color: #444;
    margin: 0;
}

/* Selo discreto "integrado via Ludopedia" no rodapé do modal de detalhes */
#modal-jogo p.selo-ludopedia-rodape {
    margin: 10px 0 0;
    font-size: 0.7rem;
    line-height: 1;
    color: #999;
    text-align: center;
}

#modal-jogo .modal-conteudo .selo-ludopedia-rodape img {
    width: 12px;
    height: 12px;
    object-fit: contain;
    opacity: 0.6;
    vertical-align: middle;
    margin-right: 4px;
}

/* Botão Ludopedia no modal */
.btn-ludopedia {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: #fff8e6;
    border: 1px solid #f0c040;
    color: #7a5c00;
    padding: 7px 14px 7px 10px;
    border-radius: 8px;
    text-decoration: none;
    font-size: 0.82rem;
    font-weight: 600;
    transition: background 0.2s;
    white-space: nowrap;
}

.btn-ludopedia:hover {
    background: #fef0b0;
}

.btn-ludopedia img {
    width: 20px;
    height: 20px;
    object-fit: contain;
}

.btn-ludopedia span {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 4px;
}

.rodape-site {
    text-align: center;
    padding: 20px 20px 18px;
    color: #f0e9ff;
    background: #2d0b5f;
}

.rodape-site p {
    margin: 4px 0;
    font-size: 0.85rem;
}

.rodape-credito {
    display: inline-flex;
    align-items: center;
    margin-top: 2px;
    opacity: 0.85;
    transition: opacity 0.2s;
}

.rodape-credito:hover {
    opacity: 1;
}

.rodape-credito img {
    height: 55px;
    width: auto;
}

