<div class="scene mentions"><div class="row"><span class="label">FIXED PROMPT SET</span><strong id="ratio">0 / 5</strong></div><div class="cards"><div>01 <b>BRAND</b></div><div>02 <b>—</b></div><div>03 <b>BRAND</b></div><div>04 <b>—</b></div><div>05 <b>BRAND</b></div></div><div class="meter"><i id="fill"></i></div><small>Mentions ≠ source citations</small></div>
.scene{width:min(92%,680px);max-height:94%;font:700 clamp(10px,max(1.7vmin,1vw),15px)/1.3 sans-serif;color:var(--fg)}.label{font:900 clamp(10px,max(1.3vmin,1vw),12px)/1 sans-serif;letter-spacing:.12em;color:var(--accent)}.panel{background:var(--surface);border:1px solid var(--line);padding:clamp(8px,2vmin,18px)}.muted{color:var(--muted)}.accent{color:var(--accent)}.row{display:flex;align-items:center;gap:clamp(5px,1.2vmin,10px)}.pill{display:inline-block;padding:.35em .6em;border:1px solid var(--line);border-radius:30px}button{cursor:pointer;font:inherit}@media(min-width:700px){.scene{transform:scale(1.5)}}.mentions{max-width:580px}.mentions .row{justify-content:space-between}.mentions strong{font-size:clamp(15px,3vmin,28px);color:var(--accent)}.cards{display:flex;gap:clamp(3px,.8vmin,8px);margin:clamp(9px,2.5vmin,24px) 0}.cards div{flex:1;min-width:0;padding:clamp(5px,1.5vmin,13px) 1px;border:1px solid var(--line);background:var(--surface);text-align:center;font-size:clamp(10px,max(1.2vmin,1vw),12px);opacity:.25}.cards div.active{opacity:1}.cards b{display:block;margin-top:7px;font-size:clamp(10px,max(1.4vmin,1vw),12px)}.cards .active:has(b:not(:empty)){border-color:var(--accent)}.meter{height:clamp(7px,1.5vmin,12px);background:var(--line)}.meter i{display:block;height:100%;width:0;background:var(--accent);transition:width .35s}.mentions small{display:block;margin-top:8px;color:var(--muted);font-size:clamp(10px,max(1.3vmin,1vw),12px)}
const cards=[...document.querySelectorAll('.cards div')],ratio=document.querySelector('#ratio'),fill=document.querySelector('#fill');let n=0;function step(){n=n%5+1;cards.forEach((c,i)=>c.classList.toggle('active',i<n));const seen=cards.slice(0,n).filter(c=>c.textContent.includes('BRAND')).length;ratio.textContent=seen+' / '+n;fill.style.width=seen/n*100+'%'}step();setInterval(step,600);