/* Alavanca premiada — o disparo do fundo.
 *
 * Um painel industrial: à esquerda uma alavanca robusta num trilho; ao centro
 * um alvo luminoso que pisca entre verde (disparo) e vermelho (neutro) numa
 * velocidade frenética, com uma coroa de lâmpadas correndo em volta. A pessoa
 * puxa a alavanca para baixo: o piscar acelera e, só depois da resposta do
 * servidor, o alvo trava no verde com CLANK e sirenes de festa (prêmio) ou no
 * vermelho com BOMP e as luzes do painel se apagam (consolo).
 *
 * O ALVO NÃO PARA NO MOMENTO DO PUXÃO. Se parasse, o tempo da pessoa estaria
 * decidindo — ou a tela teria de trocar a cor depois de parar, o que é pior.
 * A aceleração depois do puxão é a fase A, igual nas duas jogadas; a trava é
 * a fase B, depois da resposta.
 *
 * O piscar é movido pelo JS (setTimeout + relógio real). Estados finais por
 * classe estática; o bloco de movimento reduzido para em estado visível.
 */

.av__palco {
    position: relative;
    width: 100%;
    max-width: 480px;
    margin: 0 auto;
    aspect-ratio: 16 / 10;
    border-radius: 14px;
    overflow: hidden;
    background:
        repeating-linear-gradient(135deg, rgba(255, 255, 255, .025) 0 2px, transparent 2px 12px),
        linear-gradient(180deg, var(--jg-1b2620, #1B2620) 0%, var(--jg-0f1a14, #0F1A14) 100%);
    box-shadow: 0 10px 24px -12px rgba(0, 0, 0, .7), inset 0 0 0 3px #2E3B33, inset 0 0 0 5px var(--jg-0b120e, #0B120E);
    user-select: none;
    font-family: Arial, sans-serif;
}
/* parafusos nos cantos: é um painel de aço */
.av__parafuso {
    position: absolute;
    width: 10px; height: 10px;
    border-radius: 50%;
    background: radial-gradient(circle at 35% 35%, #9AA39C, #3A4A40 70%);
    box-shadow: inset 0 0 2px #000;
    z-index: 2;
}
.av__parafuso--a { left: 3%; top: 4%; }   .av__parafuso--b { right: 3%; top: 4%; }
.av__parafuso--c { left: 3%; bottom: 4%; } .av__parafuso--d { right: 3%; bottom: 4%; }

/* Rótulo do produto. NÃO é nome de prêmio. */
.av__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, .08);
    border: 1px solid rgba(125,214,154, .4);
    font: 700 10px/1 Arial, sans-serif;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--jg-cff3da, #CFF3DA);
    white-space: nowrap;
    z-index: 9;
}
.av__rotulo img { width: 12px; height: 12px; }

/* ---------------- a alavanca ---------------- */

.av__trilho {
    position: absolute;
    left: 13%; top: 22%; bottom: 16%;
    width: 7%;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--jg-0b120e, #0B120E), #2E3B33 50%, var(--jg-0b120e, #0B120E));
    box-shadow: inset 0 0 6px #000, 0 0 0 2px #3A4A40;
    z-index: 3;
}
/* marcas do curso */
.av__trilho::before, .av__trilho::after {
    content: '';
    position: absolute; left: 50%; width: 3px; height: 3px; margin-left: -1.5px;
    border-radius: 50%; background: #7DD69A; opacity: .6;
}
.av__trilho::before { top: 6%; }
.av__trilho::after  { bottom: 6%; background: #FFD86B; }
/* o manete: o JS escreve --av-puxa (0..1) */
.av__manete {
    position: absolute;
    left: 16.5%; top: 24%;
    width: 15%; aspect-ratio: 1.15;
    transform: translate(-50%, calc(var(--av-puxa, 0) * var(--av-curso, 150px)));
    border-radius: 12px;
    background: linear-gradient(180deg, #E5B93A, #B8860B 60%, #8A6D1F);
    border: 2px solid #FFE98A;
    box-shadow: 0 6px 12px rgba(0, 0, 0, .6), inset 0 2px 0 rgba(255, 255, 255, .35);
    cursor: grab;
    touch-action: none;
    z-index: 5;
}
.av__manete::before {
    content: '';
    position: absolute; left: 18%; right: 18%; top: 38%; height: 24%;
    background: repeating-linear-gradient(90deg, rgba(0, 0, 0, .35) 0 3px, transparent 3px 7px);
    border-radius: 3px;
}
.av--puxando .av__manete { cursor: grabbing; }
.av--travado .av__manete { cursor: default; filter: brightness(.85); }
.av__alav-rotulo {
    position: absolute;
    left: 6%; width: 21%; top: 12%;
    text-align: center;
    font: 700 8.5px/1.25 Arial, sans-serif;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: rgba(var(--jg-rgb-cff3da, 207,243,218), .75);
    z-index: 3;
}
/* Solta antes do compromisso: o manete volta com mola (transição só aqui,
   é enfeite — o valor final vem do JS). */
.av--mola .av__manete { transition: transform .35s cubic-bezier(.3, 1.4, .5, 1); }

/* ---------------- o alvo ---------------- */

.av__alvo {
    position: absolute;
    left: 62%; top: 52%;
    width: 44%; aspect-ratio: 1;
    transform: translate(-50%, -50%);
    border-radius: 50%;
    background: var(--jg-0b120e, #0B120E);
    border: 4px solid #3A4A40;
    box-shadow: 0 0 0 3px var(--jg-0b120e, #0B120E), 0 0 20px rgba(0, 0, 0, .7), inset 0 0 16px #000;
    z-index: 4;
}
/* o disco que pisca: cor escrita por classe */
.av__disco {
    position: absolute; inset: 18%;
    border-radius: 50%;
    background: radial-gradient(circle at 40% 35%, #46564c, var(--jg-1b2620, #1B2620) 70%);
    box-shadow: inset 0 0 14px rgba(0, 0, 0, .6);
    display: flex; align-items: center; justify-content: center;
    font: 900 clamp(11px, 3.2vw, 15px)/1 Arial, sans-serif;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: rgba(var(--jg-rgb-cff3da, 207,243,218), .5);
}
.av__disco--verde {
    background: radial-gradient(circle at 40% 35%, #7DD69A, #2AA152 55%, #0F5A2C 100%);
    box-shadow: 0 0 22px rgba(125,214,154, .9), inset 0 0 14px rgba(0, 0, 0, .3);
    color: #FFFFFF;
}
.av__disco--vermelho {
    background: radial-gradient(circle at 40% 35%, #FF6B5B, #C0392B 55%, #6B1F17 100%);
    box-shadow: 0 0 22px rgba(255, 107, 91, .8), inset 0 0 14px rgba(0, 0, 0, .3);
    color: #FFFFFF;
}
/* a coroa de lâmpadas: o JS acende uma por vez (classe av__lampada--on) */
.av__lampada {
    position: absolute;
    left: 50%; top: 50%;
    width: 7%; height: 7%;
    margin: -3.5% 0 0 -3.5%;
    border-radius: 50%;
    background: #2E3B33;
    box-shadow: inset 0 0 2px #000;
}
.av__lampada--on { background: #FFE98A; box-shadow: 0 0 8px #FFE98A; }
/* fallback sem cqw: o JS posiciona por left/top se preciso — ver montar() */

/* Travas de desfecho: classes estáticas. */
.av--trava-verde .av__disco { background: radial-gradient(circle at 40% 35%, #7DD69A, #2AA152 55%, #0F5A2C 100%);
    box-shadow: 0 0 34px rgba(125,214,154, 1), 0 0 70px rgba(255, 216, 107, .5), inset 0 0 14px rgba(0, 0, 0, .3); color: #fff; }
.av--trava-verde .av__alvo { border-color: #FFD86B; }
.av--trava-verde .av__lampada { background: #FFE98A; box-shadow: 0 0 8px #FFE98A; }
.av--trava-vermelho .av__disco { background: radial-gradient(circle at 40% 35%, #B0483C, #7A2E26 55%, #3E1712 100%);
    box-shadow: inset 0 0 14px rgba(0, 0, 0, .5); color: rgba(255, 255, 255, .8); }
.av--apagou .av__lampada { background: var(--jg-1b2620, #1B2620); box-shadow: none; }
.av--apagou.av__palco { filter: brightness(.7); }
.av--apagou .av__trilho::before, .av--apagou .av__trilho::after { opacity: 0; }

/* Luzes de festa (prêmio): dois holofotes varrendo. */
.av__festa {
    position: absolute; inset: 0;
    background:
        conic-gradient(from 0deg at 62% 52%, rgba(255, 216, 107, 0) 0deg, rgba(255, 216, 107, .35) 20deg, rgba(255, 216, 107, 0) 40deg,
                       rgba(125,214,154, 0) 180deg, rgba(125,214,154, .35) 200deg, rgba(125,214,154, 0) 220deg);
    opacity: 0;
    transform-origin: 62% 52%;          /* gira em volta do alvo, nao do palco */
    z-index: 6; pointer-events: none;
}
.av--trava-verde .av__festa { opacity: 1; animation: av-festa 1.2s linear infinite; }
@keyframes av-festa { to { transform: rotate(360deg); } }
.av__clank {
    position: absolute; inset: 0;
    background: rgba(255, 241, 176, .5);
    opacity: 0;
    z-index: 7; pointer-events: none;
}
.av--trava-verde .av__clank { animation: av-clank .35s ease-out forwards; }
@keyframes av-clank { 0% { opacity: 1; } 100% { opacity: 0; } }

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

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

/* ---------------- mensagem ---------------- */

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

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

.av__premios {
    display: flex; flex-wrap: wrap; justify-content: center; gap: 10px;
    margin: 14px auto 0; max-width: 640px;
}
.av__titulo {
    width: 100%; text-align: center;
    font: 700 13px/1.3 Arial, sans-serif; color: var(--jg-14532d, #14532d); margin-bottom: 2px;
}
.av__premio { width: 74px; text-align: center; font: 600 10px/1.2 Arial, sans-serif; color: #46564c; }
.av__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) {
    .av--mola .av__manete { transition: none; }
    .av--trava-verde .av__festa { animation: none; opacity: .8; }
    .av--trava-verde .av__clank { animation: none; }
    .av--placa .av__placa { animation: none; transform: translate(-50%, 0); opacity: 1; }
}
