:root{--brand: #6264a7;--brand-dark: #4b4d8f;--text: #242424;--muted: #616161;--bg: #f5f5f5;--card: #ffffff;--border: #e0e0e0}@media(prefers-color-scheme:dark){:root{--text: #f0f0f0;--muted: #b0b0b0;--bg: #1f1f1f;--card: #2b2b2b;--border: #3d3d3d}}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,sans-serif;color:var(--text);background:var(--bg);overflow-x:hidden}.app{max-width:1100px;margin:0 auto;padding:16px}.top h1{margin:0;font-size:1.6rem}.status{margin:4px 0 16px;color:var(--muted)}.stage{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start}.gallery{position:relative;background:#141414;border-radius:12px;padding:12px;height:min(70vh,640px);display:flex;flex-wrap:wrap;align-content:center;justify-content:center;gap:8px;overflow:hidden}.gallery .empty{color:#c8c8c8;margin:auto}.tile{position:relative;width:var(--tile-w, 240px);aspect-ratio:16 / 9;background:#292929;border-radius:8px;display:flex;align-items:center;justify-content:center;outline:3px solid transparent;outline-offset:-3px;transition:opacity .3s}.avatar{width:38%;max-width:96px;aspect-ratio:1;border-radius:50%;color:#fff;font-weight:600;font-size:clamp(.8rem,calc(var(--tile-w, 240px) / 9),2rem);display:flex;align-items:center;justify-content:center}.tile-name{position:absolute;left:8px;bottom:6px;max-width:calc(100% - 16px);padding:2px 8px;border-radius:4px;background:#0000008c;color:#fff;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tile.speaking{outline-color:#7f85f5;box-shadow:0 0 0 1px #7f85f5,0 0 18px #7f85f58c}.gallery.has-winner .tile:not(.winner){opacity:.35}.tile.winner{outline-width:4px;outline-offset:-4px;animation:glow 1.2s ease-in-out infinite alternate}@keyframes glow{0%{box-shadow:0 0 0 1px #7f85f5,0 0 12px #7f85f580}to{box-shadow:0 0 0 2px #7f85f5,0 0 32px #7f85f5e6}}.side{display:flex;flex-direction:column;gap:12px}.result{background:var(--card);border:2px solid var(--brand);border-radius:12px;padding:16px;text-align:center;display:flex;flex-direction:column;gap:4px;animation:pop .4s ease-out}.result[hidden]{display:none}.result-label{color:var(--muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.05em}.result-name{font-size:1.8rem;color:var(--brand);word-break:break-word}.result-by{color:var(--muted);font-size:.85rem}button{font:inherit;border-radius:8px;padding:12px 16px;cursor:pointer;border:none}.spin{background:var(--brand);color:#fff;font-size:1.3rem;font-weight:600}.spin:hover:not(:disabled){background:var(--brand-dark)}.spin:disabled{opacity:.5;cursor:not-allowed}.secondary{background:var(--card);color:var(--text);border:1px solid var(--border)}.people{background:var(--card);border:1px solid var(--border);border-radius:12px;padding:12px 16px}.people h2{margin:0;font-size:1rem;display:flex;justify-content:space-between}.people h2 .badge{background:var(--brand);color:#fff;border-radius:999px;padding:0 10px;font-size:.85rem;line-height:1.6}.hint{margin:4px 0 8px;color:var(--muted);font-size:.85rem}.people ul{list-style:none;margin:0;padding:0;max-height:40vh;overflow-y:auto}.people li label{display:flex;gap:8px;align-items:center;padding:4px 0;cursor:pointer}.people input{width:16px;height:16px;accent-color:var(--brand)}body.compact .stage{grid-template-columns:1fr;gap:12px}body.compact .gallery{height:300px;padding:8px}body.compact .top h1{font-size:1.2rem}@media(max-width:760px){.stage{grid-template-columns:1fr}}.confetti{position:fixed;top:-10px;width:10px;height:14px;border-radius:2px;pointer-events:none;z-index:10;animation:fall 2.6s ease-in forwards}@keyframes fall{to{transform:translate(var(--drift),105vh) rotate(720deg);opacity:.8}}@keyframes pop{0%{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}.config{max-width:520px;margin:40px auto;padding:16px;line-height:1.5}.people .small,.editor .small{padding:8px 14px;font-size:.95rem}#editTeamBtn{margin-top:10px;width:100%}.editor textarea{width:100%;font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:8px;resize:vertical}.file-btn{display:block;margin-top:8px;padding:8px 14px;text-align:center;border:1px dashed var(--border);border-radius:8px;cursor:pointer;color:var(--brand)}.file-btn input{display:none}.editor .row{display:flex;gap:8px;margin-top:8px}.editor .row button{flex:1}[hidden]{display:none!important}
