/* Fusível premiado — a carga máxima.
 *
 * Um gerador futurista com a marca da campanha no centro, dois cabos de
 * alta tensão soltando faíscas nas laterais. A pessoa toca em "Injetar
 * capital": a faísca faz a corrida final até o gerador. Só depois da resposta
 * do servidor o gerador absorve a carga e tudo brilha em dourado (prêmio) ou o
 * fusível estoura e a tela apaga em blecaute (consolo).
 *
 * A FAÍSCA SEMPRE CHEGA AO CENTRO, nas duas jogadas — o "momento exato" é
 * encenado, não julgado: o tempo do toque não decide nada. A corrida final e o
 * impacto são a fase A, iguais com e sem prêmio.
 *
 * O blecaute é um véu preto por classe estática: aparece em qualquer captura.
 * Movimento reduzido para em estado visível.
 */

.fz__palco {
    position: relative;
    width: 100%;
    max-width: 480px;
    margin: 0 auto;
    aspect-ratio: 16 / 10;
    border-radius: 14px;
    overflow: hidden;
    background:
        radial-gradient(circle at 50% 55%, rgba(var(--jg-rgb-2aa152, 42,161,82), .25), rgba(var(--jg-rgb-2aa152, 42,161,82), 0) 45%),
        linear-gradient(180deg, var(--jg-06281a, #06281A) 0%, var(--jg-0b3d24, #0B3D24) 100%);
    box-shadow: 0 10px 24px -12px rgba(0, 0, 0, .6);
    user-select: none;
    font-family: Arial, sans-serif;
}
.fz__palco::before {
    content: '';
    position: absolute; inset: 0;
    background:
        linear-gradient(rgba(var(--jg-rgb-7dd69a, 125,214,154), .06) 1px, transparent 1px) 0 0 / 100% 24px,
        linear-gradient(90deg, rgba(var(--jg-rgb-7dd69a, 125,214,154), .06) 1px, transparent 1px) 0 0 / 24px 100%;
    pointer-events: none;
}

/* Rótulo do produto. NÃO é nome de prêmio. */
.fz__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, .1);
    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;
}
.fz__rotulo img { width: 12px; height: 12px; }

/* ---------------- cabos ---------------- */

.fz__cabo {
    position: absolute;
    top: 55%;
    width: 34%;
    height: 8px;
    margin-top: -4px;
    background: linear-gradient(180deg, #3A4A40, var(--jg-1b2620, #1B2620));
    border-top: 1px solid rgba(var(--jg-rgb-7dd69a, 125,214,154), .35);
    border-bottom: 1px solid rgba(0, 0, 0, .6);
    z-index: 2;
}
.fz__cabo--esq { left: 0; border-radius: 0 4px 4px 0; }
.fz__cabo--dir { right: 0; border-radius: 4px 0 0 4px; }
/* faíscas fixas nas pontas dos cabos (as "laterais soltando faísca") */
.fz__ponta {
    position: absolute;
    top: 55%;
    width: 14px; height: 14px;
    margin-top: -7px;
    border-radius: 50%;
    background: radial-gradient(circle, #FFF1B0, rgba(255, 233, 138, 0) 70%);
    z-index: 3;
    animation: fz-ponta .25s steps(2) infinite alternate;
}
.fz__ponta--esq { left: 2%; }
.fz__ponta--dir { right: 2%; }
@keyframes fz-ponta { from { opacity: .35; transform: scale(.8); } to { opacity: 1; transform: scale(1.3); } }

/* A faísca que corre. Antes do toque, vai e volta pelo cabo esquerdo (CSS);
   depois do toque o JS assume e a leva ao centro. */
.fz__faisca {
    position: absolute;
    top: 55%;
    left: 4%;
    width: 18px; height: 18px;
    margin: -9px 0 0 -9px;
    border-radius: 50%;
    background: radial-gradient(circle, #FFFFFF, #FFE98A 40%, rgba(255, 216, 107, 0) 72%);
    box-shadow: 0 0 12px #FFE98A, 0 0 24px rgba(255, 216, 107, .6);
    z-index: 5;
}
.fz__faisca::after {
    content: '';
    position: absolute; left: 50%; top: 50%;
    width: 40px; height: 3px;
    margin: -1.5px 0 0 -40px;
    background: linear-gradient(90deg, rgba(255, 233, 138, 0), rgba(255, 233, 138, .9));
    border-radius: 2px;
}
.fz--ocioso .fz__faisca { animation: fz-vaivem 1.1s ease-in-out infinite alternate; }
@keyframes fz-vaivem { from { left: 4%; } to { left: 30%; } }

/* ---------------- o gerador ---------------- */

.fz__gerador {
    position: absolute;
    left: 50%; top: 55%;
    width: 34%; aspect-ratio: 1;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    background: radial-gradient(circle at 50% 45%, var(--jg-14532d, #14532d), var(--jg-06281a, #06281A) 70%);
    border: 3px solid rgba(var(--jg-rgb-7dd69a, 125,214,154), .6);
    box-shadow: 0 0 22px rgba(var(--jg-rgb-7dd69a, 125,214,154), .35), inset 0 0 26px rgba(0, 0, 0, .6);
    z-index: 4;
}
.fz__gerador::before {
    content: '';
    position: absolute; inset: 9%;
    border-radius: 50%;
    border: 2px dashed rgba(var(--jg-rgb-7dd69a, 125,214,154), .45);
}
.fz__gerador::after {
    content: '';
    position: absolute; inset: 20%;
    border-radius: 50%;
    border: 1.5px solid rgba(var(--jg-rgb-7dd69a, 125,214,154), .35);
}
/* a marca no núcleo */
.fz__marca {
    position: absolute; left: 50%; top: 50%;
    width: 36%; height: 36%;
    transform: translate(-50%, -50%);
    background: var(--fz-marca) center / contain no-repeat;
    opacity: .95;
    filter: drop-shadow(0 0 6px rgba(var(--jg-rgb-7dd69a, 125,214,154), .6));
    z-index: 5;
}
/* O rotor gira sempre um pouco; mais rápido quando energizado. */
.fz--ocioso .fz__gerador::before, .fz--injeta .fz__gerador::before { animation: fz-rotor 6s linear infinite; }
@keyframes fz-rotor { to { transform: rotate(360deg); } }

/* O fusível: tubo de vidro no alto do gerador. */
.fz__fusivel {
    position: absolute;
    left: 50%; top: 22%;
    width: 16%; height: 7%;
    transform: translateX(-50%);
    border-radius: 999px;
    background: linear-gradient(180deg, rgba(255, 255, 255, .35), rgba(255, 255, 255, .08));
    border: 1.5px solid rgba(var(--jg-rgb-cff3da, 207,243,218), .7);
    box-shadow: inset 0 0 8px rgba(255, 255, 255, .2);
    z-index: 6;
}
.fz__fusivel::before, .fz__fusivel::after {
    content: '';
    position: absolute; top: -20%; bottom: -20%; width: 16%;
    background: #B8860B; border-radius: 3px;
}
.fz__fusivel::before { left: -6%; }
.fz__fusivel::after  { right: -6%; }
/* o filamento */
.fz__filamento {
    position: absolute; left: 14%; right: 14%; top: 50%;
    height: 2px; margin-top: -1px;
    background: #FFE98A;
    box-shadow: 0 0 6px #FFE98A;
}

/* Impacto (fase A, igual nas duas): clarão curto no gerador. */
.fz__impacto {
    position: absolute;
    left: 50%; top: 55%;
    width: 0; height: 0;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 255, 255, .95), rgba(255, 233, 138, 0) 70%);
    transform: translate(-50%, -50%);
    z-index: 6; pointer-events: none;
}
.fz--impacto .fz__impacto { animation: fz-impacto .35s ease-out forwards; }
@keyframes fz-impacto { 0% { width: 0; height: 0; opacity: 1; } 100% { width: 46%; height: 46%; opacity: 0; } }

/* ---------------- prêmio: energizado ---------------- */

.fz--energizado .fz__gerador {
    border-color: #FFD86B;
    background: radial-gradient(circle at 50% 45%, #E5B93A, #8A6D1F 70%);
    box-shadow: 0 0 40px rgba(255, 216, 107, .9), 0 0 90px rgba(255, 216, 107, .45), inset 0 0 26px rgba(0, 0, 0, .3);
}
.fz--energizado .fz__gerador::before { border-color: #FFE98A; animation: fz-rotor .8s linear infinite; }
.fz--energizado .fz__gerador::after  { border-color: rgba(255, 233, 138, .8); }
.fz--energizado .fz__marca { filter: drop-shadow(0 0 10px #FFE98A) brightness(1.3); }
.fz--energizado .fz__filamento { background: #FFFFFF; box-shadow: 0 0 10px #FFFFFF; }
.fz--energizado .fz__cabo { background: linear-gradient(180deg, #E5B93A, #8A6D1F); }
.fz--energizado .fz__faisca { opacity: 0; }
/* A tela inteira brilha em dourado: véu que pulsa e assenta. */
.fz__super {
    position: absolute; inset: 0;
    background: radial-gradient(circle at 50% 55%, rgba(255, 233, 138, .95), rgba(255, 216, 107, .35) 60%);
    opacity: 0;
    z-index: 7; pointer-events: none;
}
.fz--energizado .fz__super { animation: fz-super 1.1s ease-out forwards; }
@keyframes fz-super { 0% { opacity: 1; } 40% { opacity: .55; } 100% { opacity: .18; } }
.fz__raio {
    position: absolute;
    left: 50%; top: 55%;
    width: 3px; height: 0;
    margin-left: -1.5px;
    transform-origin: 50% 0;
    background: linear-gradient(180deg, rgba(255, 233, 138, 1), rgba(255, 216, 107, 0));
    opacity: 0;
    z-index: 6; pointer-events: none;
}
.fz--energizado .fz__raio { animation: fz-raio .9s ease-out forwards; }
@keyframes fz-raio { 0% { height: 0; opacity: 1; } 100% { height: 64%; opacity: 0; } }

/* ---------------- consolo: fusível rompido e blecaute ---------------- */

.fz--queimou .fz__fusivel { background: rgba(30, 30, 30, .8); border-color: #6E7871; box-shadow: none; }
.fz--queimou .fz__filamento { background: none; box-shadow: none; border-top: 2px dashed #6E7871; height: 0; }
/* as rachaduras do vidro */
.fz__rachadura {
    position: absolute;
    left: 50%; top: 22%;
    width: 16%; height: 7%;
    transform: translateX(-50%);
    opacity: 0;
    z-index: 7; pointer-events: none;
}
.fz__rachadura svg { width: 100%; height: 100%; display: block; overflow: visible; }
.fz__rachadura path { fill: none; stroke: #DDE2DE; stroke-width: 1.2; }
.fz--queimou .fz__rachadura { animation: fz-racha .3s steps(2) forwards; }
@keyframes fz-racha { to { opacity: 1; } }
.fz__estouro {
    position: absolute;
    left: 50%; top: 25%;
    width: 0; height: 0;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(255, 255, 255, 1), rgba(255, 255, 255, 0) 70%);
    transform: translate(-50%, -50%);
    z-index: 7; pointer-events: none;
}
.fz--queimou .fz__estouro { animation: fz-estouro .4s ease-out forwards; }
@keyframes fz-estouro { 0% { width: 0; height: 0; opacity: 1; } 100% { width: 40%; height: 40%; opacity: 0; } }
/* O véu do blecaute e o texto cinza. */
.fz__blecaute {
    position: absolute; inset: 0;
    background: #050807;
    opacity: 0;
    z-index: 9; pointer-events: none;
}
.fz--blecaute .fz__blecaute { animation: fz-apaga .5s ease-in forwards; }
@keyframes fz-apaga { to { opacity: 1; } }
.fz__apagado {
    position: absolute;
    left: 8%; right: 8%; top: 50%;
    transform: translateY(-50%);
    text-align: center;
    font: 700 clamp(12px, 3.4vw, 16px)/1.45 Arial, sans-serif;
    letter-spacing: .04em;
    color: #8A948D;
    opacity: 0;
    z-index: 10;
}
.fz--blecaute .fz__apagado { animation: fz-texto-cinza .6s .4s ease forwards; }
@keyframes fz-texto-cinza { to { opacity: 1; } }

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

.fz__placa {
    position: absolute;
    left: 50%; bottom: 6%;
    width: 52%;
    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;
}
.fz__placa img { width: 44px; height: 44px; object-fit: cover; border-radius: 6px; flex: none; }
.fz__placa div { font: 700 clamp(10px, 2.6vw, 12px)/1.25 Arial, sans-serif; color: var(--jg-14532d, #14532d); min-width: 0; }
.fz__placa small { display: block; font: 700 9px/1.2 Arial, sans-serif; letter-spacing: .08em; color: #8A6D1F; margin-bottom: 2px; }
.fz--placa .fz__placa { animation: fz-placa .5s cubic-bezier(.3, 1.3, .5, 1) forwards; }
@keyframes fz-placa { to { transform: translate(-50%, 0); opacity: 1; } }

/* ---------------- botão (a chave geral) e mensagem ---------------- */

.fz__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);
}
.fz__botao:hover:not(:disabled) { filter: brightness(1.06); }
.fz__botao:disabled { opacity: .55; cursor: default; }

.fz__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);
}
.fz__msg--premiado { background: var(--jg-e3f5e6, #E3F5E6); border-color: var(--jg-9fd8ab, #9FD8AB); color: var(--jg-14532d, #14532d); }
.fz__msg--consolo  { background: #F1F3F1; border-color: #CDD5CE; color: #4F5A52; }
.fz__msg b { color: var(--jg-0a7a00, #0A7A00); }
.fz__msg--consolo b { color: #5C6B60; }

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

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

/* Movimento reduzido: cada coisa para num estado VISÍVEL. É também o que as
   capturas do headless mostram. */
@media (prefers-reduced-motion: reduce) {
    .fz__ponta { animation: none; opacity: .9; }
    .fz--ocioso .fz__faisca { animation: none; left: 17%; }
    .fz--ocioso .fz__gerador::before, .fz--injeta .fz__gerador::before, .fz--energizado .fz__gerador::before { animation: none; }
    .fz--impacto .fz__impacto { animation: none; }
    .fz--energizado .fz__super { animation: none; opacity: .18; }
    .fz--energizado .fz__raio { animation: none; height: 40%; opacity: .5; }
    .fz--queimou .fz__rachadura { animation: none; opacity: 1; }
    .fz--queimou .fz__estouro { animation: none; }
    .fz--blecaute .fz__blecaute { animation: none; opacity: 1; }
    .fz--blecaute .fz__apagado { animation: none; opacity: 1; }
    .fz--placa .fz__placa { animation: none; transform: translate(-50%, 0); opacity: 1; }
}
