/* Escudo da reserva — a barreira de proteção.
 *
 * Uma casa no centro, protegida por um escudo de energia feito da marca da
 * campanha. A pessoa toca em "Fortalecer reserva" e uma tempestade manda
 * raios de imprevistos contra o escudo. Só depois da resposta do servidor o
 * escudo absorve tudo, cresce e vira dourado (prêmio) ou se desfaz em fumaça e
 * os raios seguintes passam — a casa continua intacta (consolo).
 *
 * OS PRIMEIROS RAIOS BATEM IGUAL NAS DUAS JOGADAS: na fase A o escudo só treme
 * — nem absorve com brilho nem cede. Se ele já brilhasse dourado no primeiro
 * raio quando há prêmio, o primeiro raio entregaria o resultado.
 *
 * Céu de tempestade em verde-escuro e cinza: sem azul.
 *
 * Estado final sempre por classe estática ou @keyframes forwards; o bloco de
 * movimento reduzido (que o Edge headless declara) para em estado visível.
 */

.pp__palco {
    position: relative;
    width: 100%;
    max-width: 480px;
    margin: 0 auto;
    aspect-ratio: 16 / 10;
    border-radius: 14px;
    overflow: hidden;
    background: linear-gradient(180deg, var(--jg-0b3d24, #0B3D24) 0%, var(--jg-0f4a2c, #0F4A2C) 55%, var(--jg-1b5e3a, #1B5E3A) 100%);
    box-shadow: 0 10px 24px -12px rgba(0, 0, 0, .6);
    user-select: none;
    font-family: Arial, sans-serif;
}
/* A tempestade escurece o céu: camada por cima do fundo, ligada pela fase A. */
.pp__ceu {
    position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(var(--jg-rgb-141e18, 20,30,24), .0) 0%, rgba(var(--jg-rgb-141e18, 20,30,24), 0) 100%);
    opacity: 0;
    z-index: 1; pointer-events: none;
}
.pp--tempestade .pp__ceu { animation: pp-escurece .6s ease-out forwards; }
@keyframes pp-escurece {
    to { opacity: 1; background: linear-gradient(180deg, rgba(var(--jg-rgb-0e1612, 14,22,18), .85) 0%, rgba(var(--jg-rgb-0e1612, 14,22,18), .35) 60%, rgba(var(--jg-rgb-0e1612, 14,22,18), 0) 100%); }
}

/* Nuvens de tempestade no alto. */
.pp__nuvem {
    position: absolute;
    top: 6%;
    height: 13%;
    border-radius: 999px;
    background: #5E6B62;
    box-shadow: inset 0 -6px 10px rgba(0, 0, 0, .35);
    z-index: 2;
    opacity: .55;
}
.pp__nuvem::before, .pp__nuvem::after {
    content: '';
    position: absolute; border-radius: 50%; background: #66746B;
    box-shadow: inset 0 -5px 8px rgba(0, 0, 0, .3);
}
.pp__nuvem::before { left: 16%; top: -50%; width: 42%; height: 125%; }
.pp__nuvem::after  { left: 48%; top: -32%; width: 38%; height: 108%; }
.pp__nuvem--a { left: 4%;  width: 30%; }
.pp__nuvem--b { left: 36%; width: 34%; top: 3%; }
.pp__nuvem--c { left: 70%; width: 28%; }
.pp--tempestade .pp__nuvem { opacity: 1; background: #3F4B44; }
.pp--tempestade .pp__nuvem::before, .pp--tempestade .pp__nuvem::after { background: #47544C; }

/* Rótulo do produto. NÃO é nome de prêmio. */
.pp__rotulo {
    position: absolute;
    left: 50%; top: 5%;
    transform: translateX(-50%);
    display: inline-flex; align-items: center; gap: 6px;
    padding: 4px 10px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .12);
    border: 1px solid rgba(var(--jg-rgb-7dd69a, 125,214,154), .45);
    font: 700 10px/1 Arial, sans-serif;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--jg-cff3da, #CFF3DA);
    white-space: nowrap;
    z-index: 8;
}
.pp__rotulo img { width: 12px; height: 12px; }

/* ---------------- chão e casa ---------------- */

.pp__chao {
    position: absolute; left: 0; right: 0; bottom: 0; height: 16%;
    background: linear-gradient(180deg, var(--jg-2e7d46, #2E7D46), var(--jg-1f5e33, #1F5E33));
    z-index: 2;
}
.pp__casa {
    position: absolute;
    left: 50%; bottom: 14%;
    width: 26%;
    transform: translateX(-50%);
    z-index: 3;
}
.pp__casa svg { width: 100%; height: auto; display: block; }

/* ---------------- o escudo ---------------- */

/* Uma cúpula elíptica em volta da casa, com a marca da campanha repetida
   por dentro (é "formado pelo logo") e uma borda de energia. */
.pp__escudo {
    position: absolute;
    left: 50%; bottom: 9%;
    width: 40%;
    aspect-ratio: 1 / 1;
    transform: translateX(-50%);
    transform-origin: 50% 85%;
    border-radius: 50%;
    border: 2.5px solid rgba(var(--jg-rgb-7dd69a, 125,214,154), .9);
    background:
        radial-gradient(ellipse at 50% 60%, rgba(var(--jg-rgb-7dd69a, 125,214,154), .10), rgba(var(--jg-rgb-7dd69a, 125,214,154), .28) 90%, rgba(var(--jg-rgb-7dd69a, 125,214,154), .45) 100%);
    box-shadow: 0 0 18px rgba(var(--jg-rgb-7dd69a, 125,214,154), .55), inset 0 0 22px rgba(var(--jg-rgb-7dd69a, 125,214,154), .35);
    z-index: 4;
    overflow: hidden;
}
/* a marca repetida, bem discreta */
.pp__escudo::before {
    content: '';
    position: absolute; inset: 0;
    background: var(--pp-marca) center / 26px 26px repeat;
    opacity: .14;
}
/* Cada impacto na fase A: o escudo treme e clareia por um instante — o mesmo
   tremor com e sem prêmio. */
.pp__escudo.pp--impacto { animation: pp-impacto .35s ease-out; }
@keyframes pp-impacto {
    0%   { box-shadow: 0 0 30px rgba(var(--jg-rgb-cff3da, 207,243,218), .95), inset 0 0 30px rgba(var(--jg-rgb-cff3da, 207,243,218), .6); transform: translateX(-50%) scale(1.02); }
    100% { box-shadow: 0 0 18px rgba(var(--jg-rgb-7dd69a, 125,214,154), .55), inset 0 0 22px rgba(var(--jg-rgb-7dd69a, 125,214,154), .35); transform: translateX(-50%) scale(1); }
}

/* Prêmio: absorve, cresce e vira dourado. Estado final por forwards. */
.pp--blindado .pp__escudo {
    animation: pp-blinda .8s cubic-bezier(.3, 1.2, .5, 1) forwards;
}
@keyframes pp-blinda {
    to {
        transform: translateX(-50%) scale(1.42);
        border-color: #FFD86B;
        background: radial-gradient(ellipse at 50% 60%, rgba(255, 216, 107, .12), rgba(255, 216, 107, .30) 90%, rgba(255, 216, 107, .55) 100%);
        box-shadow: 0 0 34px rgba(255, 216, 107, .85), inset 0 0 30px rgba(255, 216, 107, .45);
    }
}
/* Ondas de absorção (prêmio): anéis que saem do escudo. */
.pp__onda {
    position: absolute;
    left: 50%; bottom: 9%;
    width: 40%;
    aspect-ratio: 1 / 1;
    transform: translateX(-50%) scale(1);
    transform-origin: 50% 85%;
    border-radius: 50%;
    border: 2px solid rgba(255, 216, 107, .9);
    opacity: 0;
    z-index: 4; pointer-events: none;
}
.pp--blindado .pp__onda { animation: pp-onda 1s ease-out forwards; }
.pp--blindado .pp__onda--2 { animation-delay: .25s; }
@keyframes pp-onda {
    0%   { transform: translateX(-50%) scale(1.1); opacity: .9; }
    100% { transform: translateX(-50%) scale(1.9); opacity: 0; }
}

/* Consolo: o escudo se desfaz como fumaça. */
.pp--recarga .pp__escudo { animation: pp-desfaz .7s ease-in forwards; }
@keyframes pp-desfaz {
    to { opacity: 0; filter: blur(6px); transform: translateX(-50%) scale(1.12) translateY(-6%); border-color: rgba(154, 163, 156, .3); }
}
.pp__fumaca {
    position: absolute;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(154, 163, 156, .55), rgba(154, 163, 156, 0) 70%);
    opacity: 0;
    z-index: 5; pointer-events: none;
}
.pp--recarga .pp__fumaca { animation: pp-fumaca 1.2s ease-out forwards; }
@keyframes pp-fumaca {
    0%   { transform: translate(0, 0) scale(.5); opacity: 0; }
    25%  { opacity: .8; }
    100% { transform: translate(var(--pp-dx), -60px) scale(1.6); opacity: 0; }
}

/* ---------------- os raios ---------------- */

/* Cada raio é um SVG posto pelo JS, que também o remove depois do clarão:
   assim nada se acumula, com ou sem animação. */
.pp__raio {
    position: absolute;
    top: 8%;
    width: 9%;
    z-index: 6; pointer-events: none;
    animation: pp-raio .4s ease-out forwards;
}
.pp__raio svg { width: 100%; height: auto; display: block; overflow: visible; }
.pp__raio path { fill: none; stroke: #FFF1B0; stroke-width: 3; stroke-linejoin: round; stroke-linecap: round;
                 filter: drop-shadow(0 0 4px rgba(255, 233, 138, .95)); }
@keyframes pp-raio {
    0%   { opacity: 0; }
    15%  { opacity: 1; }
    70%  { opacity: 1; }
    100% { opacity: 0; }
}
/* Clarão do céu a cada raio. */
.pp__clarao {
    position: absolute; inset: 0;
    background: rgba(255, 241, 176, .35);
    opacity: 0;
    z-index: 5; pointer-events: none;
}
.pp__clarao.pp--pisca { animation: pp-pisca .3s ease-out; }
@keyframes pp-pisca { 0% { opacity: 1; } 100% { opacity: 0; } }
/* Marca de impacto no chão quando o raio passa (consolo). */
.pp__queimado {
    position: absolute;
    bottom: 13%;
    width: 8%; height: 3%;
    border-radius: 50%;
    background: radial-gradient(ellipse, rgba(60, 40, 20, .8), rgba(60, 40, 20, 0) 70%);
    z-index: 3;
}

/* ---------------- placa do prêmio ---------------- */

.pp__placa {
    position: absolute;
    left: 50%; top: 20%;
    width: 50%;
    transform: translate(-50%, 16px);
    opacity: 0;
    display: flex; align-items: center; gap: 8px;
    padding: 7px 9px;
    box-sizing: border-box;
    border-radius: 8px;
    background: linear-gradient(180deg, #FFF8DC, #F5E3A1);
    border: 1.5px solid #C9A227;
    box-shadow: 0 8px 16px -8px rgba(0, 0, 0, .7);
    z-index: 8;
}
.pp__placa img { width: 44px; height: 44px; object-fit: cover; border-radius: 6px; flex: none; }
.pp__placa div { font: 700 clamp(10px, 2.6vw, 12px)/1.25 Arial, sans-serif; color: var(--jg-14532d, #14532d); min-width: 0; }
.pp__placa small { display: block; font: 700 9px/1.2 Arial, sans-serif; letter-spacing: .08em; color: #8A6D1F; margin-bottom: 2px; }
.pp--placa .pp__placa { animation: pp-placa .5s cubic-bezier(.3, 1.3, .5, 1) forwards; }
@keyframes pp-placa { to { transform: translate(-50%, 0); opacity: 1; } }

/* ---------------- botão e mensagem ---------------- */

.pp__botao {
    display: block;
    width: 100%;
    max-width: 480px;
    margin: 10px auto 0;
    padding: 12px 10px;
    border: 0;
    border-radius: 10px;
    background: linear-gradient(180deg, var(--jg-2aa152, #2AA152), var(--jg-0a7a00, #0A7A00));
    color: #fff;
    font: 700 15px/1.2 Arial, sans-serif;
    letter-spacing: .02em;
    cursor: pointer;
    box-shadow: 0 6px 14px -6px rgba(var(--jg-rgb-0a7a00, 10,122,0), .8), inset 0 1px 0 rgba(255, 255, 255, .25);
}
.pp__botao:hover:not(:disabled) { filter: brightness(1.06); }
.pp__botao:disabled { opacity: .55; cursor: default; }

.pp__msg {
    max-width: 480px;
    min-height: 56px;
    margin: 10px auto 0;
    padding: 8px 12px;
    box-sizing: border-box;
    display: flex; align-items: center; justify-content: center;
    border-radius: 9px;
    text-align: center;
    font: 700 clamp(11px, 3vw, 14px)/1.35 Arial, sans-serif;
    color: #46564c;
    background: var(--jg-eef4ef, #EEF4EF);
    border: 1px solid var(--jg-dce6de, #DCE6DE);
}
.pp__msg--premiado { background: var(--jg-e3f5e6, #E3F5E6); border-color: var(--jg-9fd8ab, #9FD8AB); color: var(--jg-14532d, #14532d); }
.pp__msg--consolo  { background: #F1F3F1; border-color: #CDD5CE; color: #4F5A52; }
.pp__msg b { color: var(--jg-0a7a00, #0A7A00); }
.pp__msg--consolo b { color: #5C6B60; }

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

.pp__premios {
    display: flex; flex-wrap: wrap; justify-content: center; gap: 10px;
    margin: 14px auto 0; max-width: 640px;
}
.pp__titulo {
    width: 100%; text-align: center;
    font: 700 13px/1.3 Arial, sans-serif; color: var(--jg-14532d, #14532d); margin-bottom: 2px;
}
.pp__premio { width: 74px; text-align: center; font: 600 10px/1.2 Arial, sans-serif; color: #46564c; }
.pp__premio img { width: 100%; border-radius: 6px; display: block; margin-bottom: 3px; }

/* Movimento reduzido: cada coisa para num estado VISÍVEL que conta a mesma
   história. É também o que as capturas do headless mostram. */
@media (prefers-reduced-motion: reduce) {
    .pp--tempestade .pp__ceu { animation: none; opacity: 1;
        background: linear-gradient(180deg, rgba(var(--jg-rgb-0e1612, 14,22,18), .85) 0%, rgba(var(--jg-rgb-0e1612, 14,22,18), .35) 60%, rgba(var(--jg-rgb-0e1612, 14,22,18), 0) 100%); }
    .pp__escudo.pp--impacto { animation: none; }
    .pp--blindado .pp__escudo { animation: none; transform: translateX(-50%) scale(1.42); border-color: #FFD86B;
        background: radial-gradient(ellipse at 50% 60%, rgba(255, 216, 107, .12), rgba(255, 216, 107, .30) 90%, rgba(255, 216, 107, .55) 100%);
        box-shadow: 0 0 34px rgba(255, 216, 107, .85), inset 0 0 30px rgba(255, 216, 107, .45); }
    .pp--blindado .pp__onda { animation: none; transform: translateX(-50%) scale(1.6); opacity: .5; }
    .pp--recarga .pp__escudo { animation: none; opacity: 0; }
    .pp--recarga .pp__fumaca { animation: none; opacity: .6; transform: translate(var(--pp-dx), -30px) scale(1.2); }
    .pp__raio { animation: none; opacity: 1; }
    .pp__clarao.pp--pisca { animation: none; }
    .pp--placa .pp__placa { animation: none; transform: translate(-50%, 0); opacity: 1; }
}
