:root{--bg:#14111f;--surface:#211c33;--surface-2:#2c2545;--text:#f3f0ff;--muted:#a49cc2;--accent:#ff4f8b;--accent-2:#8f6bff;--ok:#3ddc97;--danger:#ff6b6b;--radius:14px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-tap-highlight-color:transparent;margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:16px;line-height:1.4}.page{max-width:560px;padding:16px 16px calc(32px + env(safe-area-inset-bottom));flex-direction:column;gap:16px;margin:0 auto;display:flex}h1{margin:0;font-size:1.6rem}h2{margin:8px 0;font-size:1.1rem}a{color:inherit}.hero p{margin:4px 0 0}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.grow{flex:1;min-width:0}.ok{color:var(--ok);font-weight:600}.error{color:var(--danger);margin:0}.back{color:var(--muted);font-size:.9rem;text-decoration:none}.game-header{flex-direction:column;gap:4px;display:flex}.game-header p{margin:0}.btn{border-radius:var(--radius);background:var(--surface-2);min-height:44px;color:var(--text);font:inherit;cursor:pointer;border:none;justify-content:center;align-items:center;gap:6px;padding:10px 16px;font-weight:600;text-decoration:none;display:inline-flex}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:linear-gradient(135deg, var(--accent), var(--accent-2))}.btn.ghost{border:1px solid var(--surface-2);background:0 0}.btn.danger{color:var(--danger)}.btn.block{width:100%}.btn.icon{min-width:44px;padding:0}.btn.tile{background:var(--surface);border:2px solid #0000;flex-direction:column;min-height:64px}.btn.tile.selected{border-color:var(--accent);background:var(--surface-2)}.linkish{color:var(--accent);font:inherit;cursor:pointer;background:0 0;border:none;padding:0;text-decoration:underline}.badge{background:var(--accent-2);border-radius:999px;padding:1px 8px;font-size:.75rem;font-weight:600;display:inline-block}.card{background:var(--surface);border-radius:var(--radius);padding:14px}.link-card{flex-direction:column;gap:2px;text-decoration:none;display:flex}.list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.row{background:var(--surface);border-radius:var(--radius);align-items:center;gap:10px;padding:10px 12px;display:flex}.dot{background:var(--surface-2);border-radius:50%;width:10px;height:10px}.dot.on{background:var(--ok)}.grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;display:grid}.song{background:var(--surface);border-radius:var(--radius);align-items:center;gap:10px;padding:8px;display:flex;position:relative;overflow:hidden}.song img{object-fit:cover;border-radius:6px;flex-shrink:0;width:64px;height:36px}.song .title{-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:600;text-decoration:none;display:-webkit-box;overflow:hidden}.audio-badge{vertical-align:bottom;align-items:center;gap:6px;display:inline-flex}.audio-pending,.audio-downloading{color:var(--text)}.audio-badge .spinner{color:var(--accent)}.audio-ready{color:var(--ok)}.audio-error,.audio-disabled{color:#ffc46b}.form{flex-direction:column;gap:16px;display:flex}label{flex-direction:column;gap:6px;font-weight:600;display:flex}input:not([type=radio]){border:1px solid var(--surface-2);border-radius:var(--radius);background:var(--surface);width:100%;min-height:44px;color:var(--text);font:inherit;padding:10px 12px}input[type=radio]{width:22px;height:22px;accent-color:var(--accent);flex-shrink:0}fieldset{border:none;flex-direction:column;gap:8px;margin:0;padding:0;display:flex}legend{padding:0;font-weight:600}fieldset p{margin:0}.player-row{align-items:center;gap:8px;display:flex}details{background:var(--surface);border-radius:var(--radius);padding:12px}details[open]{flex-direction:column;gap:12px;display:flex}summary{cursor:pointer;font-weight:600}.search{flex-direction:column;gap:8px;margin-top:8px;display:flex}.search-form{gap:8px;display:flex}.search-btn{min-width:104px}.search-loading{flex-direction:column;gap:8px;display:flex}.skeleton .grow{flex-direction:column;gap:6px;display:flex}.skeleton-thumb,.skeleton-line{background:linear-gradient(90deg, var(--surface-2) 25%, #3a3159 50%, var(--surface-2) 75%);background-size:200% 100%;border-radius:6px;animation:1.2s linear infinite shimmer;display:block}.skeleton-thumb{flex-shrink:0;width:64px;height:36px}.skeleton-line{width:90%;height:12px}.skeleton-line.short{width:45%}.invite{flex-direction:column;align-items:center;gap:8px;display:flex}.invite h2{margin:0}.qr{background:#fff;border-radius:8px;width:200px;height:200px}.invite-url{overflow-wrap:anywhere;text-align:center;-webkit-user-select:all;user-select:all;max-width:100%;margin:0}.host-actions{flex-direction:column;gap:8px;display:flex}.now-playing{text-align:center;flex-direction:column;align-items:center;gap:10px;display:flex}.now-playing>img{aspect-ratio:16/9;object-fit:cover;border-radius:10px;width:100%;max-width:320px}.now-playing .title{font-weight:700}.player{width:100%}.host-loading{flex-direction:column;align-items:center;gap:8px;width:100%;display:flex}.embed{aspect-ratio:16/9;width:100%}.embed iframe{border:0;border-radius:10px;width:100%;height:100%}.reveal{flex-direction:column;gap:8px;display:flex}.reveal-owner{text-align:center;margin:8px 0;font-size:1.5rem}.scoreboard{counter-reset:rank;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.scoreboard li{counter-increment:rank;background:var(--surface);border-radius:var(--radius);align-items:center;gap:10px;padding:10px 12px;display:flex}.scoreboard li:before{content:counter(rank) ".";color:var(--muted);width:1.5em}.scoreboard li.me{outline:2px solid var(--accent-2)}.gain{color:var(--ok);font-weight:600}.spinner{border:2px solid;border-right-color:#0000;border-radius:50%;flex-shrink:0;width:1em;height:1em;animation:.7s linear infinite spin;display:inline-block}.loading{justify-content:center;align-items:center;gap:8px;margin:0;display:flex}.progress{background:var(--surface-2);border-radius:999px;width:100%;height:4px;display:block;position:relative;overflow:hidden}.song .progress{border-radius:0;height:3px;position:absolute;bottom:0;left:0}.progress:after{content:"";border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--accent-2));width:40%;animation:1.3s ease-in-out infinite indeterminate;position:absolute;top:0;bottom:0;left:0}@keyframes spin{to{transform:rotate(360deg)}}@keyframes indeterminate{0%{transform:translate(-100%)}to{transform:translate(250%)}}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (prefers-reduced-motion:reduce){.spinner{animation-duration:1.5s}.progress:after,.skeleton-thumb,.skeleton-line{animation-duration:3s}}
