/* ==========================================================================
   Loja de produtos prontos (/produtos e /produto/{id}).

   Carrega JUNTO com corte.css: cabeçalho de seção, painel, bloco de preço,
   botão e tags vêm de lá — a loja é o mesmo fluxo de compra, só sem
   configurador. Aqui fica o que é só da loja: a grade de cards e a galeria.
   ========================================================================== */

/* ---------- vitrine ---------- */

.loja-grade {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 22px;
}

.loja-card {
    display: flex;
    flex-direction: column;
    text-decoration: none;
    color: inherit;
    background: var(--cor-fundo-card);
    border: 1px solid var(--cor-borda);
    border-radius: var(--raio-md);
    overflow: hidden;
    transition: transform var(--dur-media) var(--ease-suave),
                border-color var(--dur-media) ease,
                box-shadow var(--dur-media) ease;
}

.loja-card:hover {
    transform: translateY(-4px);
    border-color: rgba(var(--dourada-rgb), .8);
    box-shadow: var(--brilho-dourado);
}

/* Fundo claro na foto de propósito: as peças são MDF cru e papelão, e sobre o
   preto da marca elas somem. Mesmo motivo do preview branco do carrinho. */
.loja-card-foto {
    aspect-ratio: 4 / 3;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    overflow: hidden;
}

.loja-card-foto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.loja-card-foto i {
    font-size: 2.6rem;
    color: var(--cor-dourada);
    opacity: .5;
}

.loja-card-corpo {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 14px 16px 18px;
}

.loja-card-nome { font-size: 1rem; line-height: 1.3; }

.loja-card-tags { display: flex; gap: 6px; flex-wrap: wrap; }

.loja-card-tags .conta-tag { margin-left: 0; }

.loja-card-preco {
    margin-top: auto;
    padding-top: 6px;
    font-size: 1.15rem;
    font-weight: 600;
    color: var(--cor-dourada);
}

.loja-card-preco small {
    display: block;
    font-size: .72rem;
    font-weight: 400;
    color: var(--cor-texto-cinza);
    text-transform: uppercase;
    letter-spacing: .04em;
}

/* ---------- página do produto ---------- */

.loja-voltar { margin-bottom: 18px; font-size: .9rem; }

.loja-produto {
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
    gap: 32px;
    align-items: start;
}

.loja-galeria {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.loja-galeria-principal {
    aspect-ratio: 1 / 1;
    display: flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    border-radius: var(--raio-lg);
    overflow: hidden;
}

.loja-galeria-principal img {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.loja-galeria-principal i {
    font-size: 4rem;
    color: var(--cor-dourada);
    opacity: .5;
}

/* Fundo escuro no vídeo: letterbox branco em volta do player fica com cara de erro. */
.loja-galeria-principal video {
    width: 100%;
    height: 100%;
    object-fit: contain;
    background: #141414;
}

.loja-galeria-minis {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.loja-mini {
    width: 68px;
    height: 68px;
    padding: 0;
    border: 2px solid transparent;
    border-radius: var(--raio-sm);
    background: #fff;
    overflow: hidden;
    cursor: pointer;
    opacity: .7;
}

.loja-mini img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* Miniatura de vídeo: tile escuro com play e rótulo, no lugar de um frame que
   exigiria baixar o arquivo só para desenhar 68px. */
.loja-mini-video {
    width: 100%;
    height: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    background: #141414;
    color: #fff;
    font-size: .68rem;
    line-height: 1;
}

.loja-mini-video i { font-size: 1.1rem; }

.loja-mini:hover { opacity: 1; }

.loja-mini.ativo {
    border-color: var(--cor-dourada);
    opacity: 1;
}

.loja-nome { font-size: 1.7rem; margin: 0 0 4px; }

.loja-codigo {
    font-size: .78rem;
    opacity: .6;
    margin: 0 0 14px;
}

.loja-descricao {
    font-size: .92rem;
    line-height: 1.6;
    opacity: .85;
    margin: 0 0 20px;
    white-space: pre-line;
}

/* Escolha montado/desmontado: mesmo desenho das opções de frete da entrega —
   uma caixa por opção, a marcada ganha a borda da marca. */
.loja-montagem {
    border: 0;
    padding: 0;
    margin: 0 0 16px;
}

.loja-montagem legend {
    font-size: .82rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    opacity: .7;
    margin-bottom: 8px;
}

.loja-opcao {
    display: flex;
    gap: 12px;
    align-items: flex-start;
    padding: 12px 14px;
    margin-bottom: 8px;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: var(--raio-sm);
    cursor: pointer;
}

.loja-opcao:hover { border-color: var(--cor-dourada); }

.loja-opcao:has(input:checked) {
    border-color: var(--cor-dourada);
    background: rgba(var(--dourada-rgb), .08);
}

.loja-opcao input { margin-top: 4px; }

.loja-opcao strong { display: block; font-size: .92rem; }

.loja-opcao strong em {
    font-style: normal;
    font-weight: 400;
    color: var(--cor-dourada);
}

.loja-opcao small { display: block; font-size: .78rem; opacity: .65; }

.loja-quantidade input { max-width: 140px; }

.loja-preco { margin-top: 4px; }

.loja-preco .cc-continuar { margin-top: 18px; }

@media (max-width: 900px) {
    .loja-produto { grid-template-columns: minmax(0, 1fr); }

    .loja-galeria-principal { aspect-ratio: 4 / 3; }
}

/* ---------- preço por quantidade ---------- */

.loja-faixas {
    margin: 0 0 20px;
    padding: 12px 14px;
    border: 1px solid rgba(var(--dourada-rgb), .35);
    border-radius: var(--raio-sm);
    background: rgba(var(--dourada-rgb), .06);
}

.loja-faixas-titulo { margin: 0 0 8px; font-size: .88rem; font-weight: 600; }
.loja-faixas-titulo i { color: var(--cor-dourada); margin-right: 4px; }

.loja-faixas table { width: 100%; border-collapse: collapse; font-size: .88rem; }
.loja-faixas td { padding: 4px 0; }
.loja-faixas td:last-child { text-align: right; font-weight: 600; }
.loja-faixas tr + tr td { border-top: 1px solid rgba(255, 255, 255, .06); }

/* ---------- personalização ---------- */

.loja-personalizacao {
    border: 0;
    margin: 0 0 18px;
    padding: 0;
}

.loja-personalizacao legend {
    font-size: .8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    opacity: .75;
    margin-bottom: 10px;
}

.loja-personalizacao-instrucoes { margin: 0 0 12px; font-size: .88rem; opacity: .85; white-space: pre-line; }
.loja-personalizacao .cc-campo label em { font-style: normal; opacity: .6; font-weight: 400; }
.loja-personalizacao-nota { margin: 0; font-size: .8rem; opacity: .7; }
.loja-personalizacao-nota i { color: #25d366; margin-right: 4px; }
.loja-arquivos-erro { color: #ff8a80; opacity: 1 !important; }

/* ---------- medida (produto com medidas) ---------- */

.loja-medida { border: 0; margin: 0 0 18px; padding: 0; }

.loja-medida legend {
    font-size: .8rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    opacity: .75;
    margin-bottom: 10px;
}

.loja-formato { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.loja-formato .loja-opcao { flex: 1 1 160px; }

.loja-medida-retangular { display: grid; grid-template-columns: 1fr 1fr; gap: 0 12px; }
.loja-medida-retangular[hidden] { display: none; }
.loja-medida-regra { grid-column: 1 / -1; display: block; font-size: .78rem; opacity: .7; margin: -6px 0 6px; }
.loja-medida-especial { display: block; font-size: .82rem; color: var(--cor-dourada); }

/* ---------- logo salvo na conta ---------- */

.loja-logo-conta { align-items: center; margin-bottom: 14px; }
.loja-logo-conta img {
    width: 48px;
    height: 48px;
    object-fit: contain;
    background: #fff;
    border-radius: var(--raio-sm);
    padding: 4px;
}
.loja-logo-conta small { overflow-wrap: anywhere; }
.loja-logo-dica { margin: 0 0 12px; font-size: .82rem; opacity: .8; }

/* ---------- abas de categoria ---------- */

.loja-categorias {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 0 0 22px;
}

.loja-categorias a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 14px;
    border-radius: 999px;
    border: 1px solid var(--cor-borda);
    color: inherit;
    text-decoration: none;
    font-size: .88rem;
    transition: border-color .2s ease, background .2s ease;
}

.loja-categorias a:hover { border-color: var(--cor-dourada); }

.loja-categorias a.ativo {
    background: var(--cor-dourada);
    border-color: var(--cor-dourada);
    color: #141414;
    font-weight: 600;
}

/* A aba da linha com marca própria já chama atenção na vitrine comum. */
.loja-categorias a.festa {
    border: 0;
    color: #fff;
    font-weight: 600;
    background: linear-gradient(90deg, var(--festa-1, #ec4f8f), var(--festa-2, #8b5cf6));
}

.loja-categorias a img {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    object-fit: cover;
    border: 1px solid #fff;
}

.loja-card-selo {
    align-self: flex-start;
    padding: 2px 10px;
    border-radius: 999px;
    font-size: .72rem;
    font-weight: 600;
    color: #fff;
    background: linear-gradient(90deg, var(--festa-1, #ec4f8f), var(--festa-2, #8b5cf6));
}

