/* One voting pattern for every game (Goob Falso, O Infiltrado): pick a card, then confirm with the primary button.
   States: idle (voting closed) · votable (wakes up: sun border + "Votar" pill) · selected (aria-pressed) ·
   sent (.sent: "SEU VOTO" stamp) · disabled (dashed, faded) · has voted (.has-voted: ✓ badge). */
.vote-card{position:relative;border:2px solid transparent;border-radius:16px;background:rgba(12,8,36,.35);color:inherit;font:inherit;cursor:default;transition:transform .15s,border-color .15s,box-shadow .15s,background .15s}
.voting .vote-card:not([disabled]){border-color:rgba(255,204,77,.65);box-shadow:0 4px 0 rgba(255,204,77,.35);cursor:pointer;animation:vote-wake 1.6s ease-in-out 2}
.voting .vote-card:not([disabled])::after{content:"Votar";position:absolute;right:6px;top:6px;background:var(--sun);color:var(--ink-dark);font-weight:800;font-size:.72rem;line-height:1;border-radius:999px;padding:4px 8px;box-shadow:0 2px 6px rgba(0,0,0,.35)}
.voting .vote-card:not([disabled]):hover{transform:translateY(-3px);border-color:var(--sun);background:rgba(255,204,77,.08)}
.vote-card:focus-visible{outline:3px solid #fff;outline-offset:3px}
.vote-card[aria-pressed="true"]{border:3px solid var(--sun)!important;background:rgba(255,204,77,.18)!important;animation:none!important}
.voting .vote-card[aria-pressed="true"]::after{content:"✓ Selecionado";background:#fff}
.vote-card.sent{border:3px solid var(--sun);background:rgba(255,204,77,.14)}
.vote-card.sent::before{content:"SEU VOTO";position:absolute;left:50%;top:38%;transform:translate(var(--stamp-x,-50%),-50%) rotate(-12deg);font-family:var(--font-logo);font-size:1.05rem;letter-spacing:.06em;color:var(--sun);border:3px solid var(--sun);border-radius:8px;padding:2px 8px;background:rgba(12,8,36,.75);z-index:2;pointer-events:none;animation:vote-stamp .35s cubic-bezier(.3,1.6,.5,1) both}
.voting .vote-card[disabled]{border:2px dashed var(--line);opacity:.45}
.vote-card .voted-mark{display:none}
.vote-card.has-voted .voted-mark{display:inline-flex;align-items:center;gap:3px;background:var(--ok);color:#06240f;font-weight:800;font-size:.68rem;border-radius:999px;padding:1px 7px}
@keyframes vote-wake{50%{box-shadow:0 4px 0 rgba(255,204,77,.35),0 0 0 6px rgba(255,204,77,.18)}}
@keyframes vote-stamp{from{transform:translate(var(--stamp-x,-50%),-50%) rotate(-12deg) scale(1.8);opacity:0}}
/* instruction + confirm bar */
.vote-bar{display:grid;gap:8px;justify-items:center;width:100%}
.vote-ask{font-family:var(--font-display);font-weight:700;font-size:1.15rem;text-align:center}
.vote-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;width:100%}
.vote-actions .btn{min-height:48px}
.vote-actions .btn-primary{flex:1 1 160px;max-width:360px}
.vote-actions .btn-ghost{flex:0 1 auto;padding-left:16px;padding-right:16px}
.vote-status{font-weight:700;color:var(--muted);text-align:center}
/* reveal: who voted for whom */
.vote-tally{display:inline-flex;align-items:center;flex-wrap:nowrap;justify-content:center;white-space:nowrap}
.vote-tally i+i{margin-left:-7px}
.vote-tally b{margin-left:4px}
.vote-tally i{width:20px;height:20px;border-radius:50%;display:inline-grid;place-items:center;font-style:normal;font-weight:800;font-size:.68rem;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.6);box-shadow:inset 0 -3px 0 rgba(0,0,0,.25),0 0 0 2px rgba(255,255,255,.85)}
.vote-tally b{background:#fff;color:var(--ink-dark);border-radius:999px;padding:0 7px;font-size:.78rem}
@media (prefers-reduced-motion:reduce){.vote-card,.vote-card::before{animation:none!important;transition:none}}
/* labels drawn by CSS, per page language (<html lang> is set by tools/i18n/build.mjs) */
:lang(en) .voting .vote-card:not([disabled])::after{content:"Vote"}
:lang(en) .voting .vote-card[aria-pressed="true"]::after{content:"✓ Selected"}
:lang(en) .vote-card.sent::before{content:"MY VOTE"}
:lang(es) .voting .vote-card[aria-pressed="true"]::after{content:"✓ Seleccionado"}
:lang(es) .vote-card.sent::before{content:"MI VOTO"}
