:root{--md-shape-xs: 4px;--md-shape-sm: 8px;--md-shape-md: 12px;--md-shape-lg: 16px;--md-shape-xl: 28px;--md-shape-full: 999px;--md-elevation-1: 0 1px 2px rgba(0, 0, 0, .3), 0 1px 3px 1px rgba(0, 0, 0, .15);--md-elevation-2: 0 1px 2px rgba(0, 0, 0, .3), 0 2px 6px 2px rgba(0, 0, 0, .15);--md-elevation-3: 0 1px 3px rgba(0, 0, 0, .3), 0 4px 8px 3px rgba(0, 0, 0, .15);--md-ease-standard: cubic-bezier(.2, 0, 0, 1);--md-ease-emphasized: cubic-bezier(.3, 0, 0, 1);--font: "Roboto", "Segoe UI", "PingFang SC", "Microsoft YaHei", system-ui, -apple-system, sans-serif;--radius-sm: var(--md-shape-sm);--radius: var(--md-shape-lg);--radius-lg: var(--md-shape-xl);--shadow: var(--md-elevation-3);--shadow-sm: var(--md-elevation-1)}:root,:root[data-theme=dark]{color-scheme:dark;--md-primary: #d0bcff;--md-on-primary: #381e72;--md-primary-container: #4f378b;--md-on-primary-container: #eaddff;--md-secondary: #ccc2dc;--md-on-secondary: #332d41;--md-secondary-container: #4a4458;--md-on-secondary-container: #e8def8;--md-tertiary: #efb8c8;--md-on-tertiary: #492532;--md-tertiary-container: #633b48;--md-on-tertiary-container: #ffd8e4;--md-error: #f2b8b5;--md-on-error: #601410;--md-error-container: #8c1d18;--md-on-error-container: #f9dedc;--md-info: #9ecaff;--md-background: #141218;--md-on-background: #e6e0e9;--md-surface: #141218;--md-on-surface: #e6e0e9;--md-surface-variant: #49454f;--md-on-surface-variant: #cac4d0;--md-surface-container-lowest: #0f0d13;--md-surface-container-low: #1d1b20;--md-surface-container: #211f26;--md-surface-container-high: #2b2930;--md-surface-container-highest: #36343b;--md-outline: #938f99;--md-outline-variant: #49454f;--md-inverse-surface: #e6e0e9;--md-inverse-on-surface: #322f35;--md-inverse-primary: #6750a4;--md-scrim: rgba(0, 0, 0, .6)}:root[data-theme=light]{color-scheme:light;--md-primary: #6750a4;--md-on-primary: #ffffff;--md-primary-container: #eaddff;--md-on-primary-container: #21005d;--md-secondary: #625b71;--md-on-secondary: #ffffff;--md-secondary-container: #e8def8;--md-on-secondary-container: #1d192b;--md-tertiary: #7d5260;--md-on-tertiary: #ffffff;--md-tertiary-container: #ffd8e4;--md-on-tertiary-container: #31111d;--md-error: #b3261e;--md-on-error: #ffffff;--md-error-container: #f9dedc;--md-on-error-container: #410e0b;--md-info: #3768c4;--md-background: #fef7ff;--md-on-background: #1d1b20;--md-surface: #fef7ff;--md-on-surface: #1d1b20;--md-surface-variant: #e7e0ec;--md-on-surface-variant: #49454f;--md-surface-container-lowest: #ffffff;--md-surface-container-low: #f7f2fa;--md-surface-container: #f3edf7;--md-surface-container-high: #ece6f0;--md-surface-container-highest: #e6e0e9;--md-outline: #79747e;--md-outline-variant: #cac4d0;--md-inverse-surface: #322f35;--md-inverse-on-surface: #f5eff7;--md-inverse-primary: #d0bcff;--md-scrim: rgba(0, 0, 0, .4)}:root{--bg-base: var(--md-surface-container-highest);--bg-gradient-top: var(--md-surface-container-low);--bg-gradient-bottom: var(--md-background);--surface: var(--md-surface-container-low);--surface-2: var(--md-surface-container);--surface-hover: var(--md-surface-container-high);--border: var(--md-outline-variant);--border-strong: var(--md-outline);--text: var(--md-on-surface);--text-muted: var(--md-on-surface-variant);--text-faint: color-mix(in srgb, var(--md-on-surface-variant) 70%, transparent);--accent: var(--md-primary);--accent-hover: var(--md-primary);--accent-press: var(--md-primary);--accent-soft: var(--md-primary-container);--accent-contrast: var(--md-on-primary);--danger: var(--md-error);--danger-soft: var(--md-error-container);--warn: var(--md-tertiary);--info: var(--md-info)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--font);color:var(--text);background:var(--md-background);transition:background-color .3s var(--md-ease-standard);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;line-height:1.5}body:before{content:"";position:fixed;top:-20vmax;right:-20vmax;bottom:-20vmax;left:-20vmax;z-index:-1;pointer-events:none;background:radial-gradient(42vmax 42vmax at 18% 8%,color-mix(in srgb,var(--md-primary) 26%,transparent),transparent 60%),radial-gradient(38vmax 38vmax at 88% 14%,color-mix(in srgb,var(--md-tertiary) 22%,transparent),transparent 62%),radial-gradient(46vmax 46vmax at 78% 96%,color-mix(in srgb,var(--md-secondary) 20%,transparent),transparent 60%),radial-gradient(40vmax 40vmax at 6% 92%,color-mix(in srgb,var(--md-primary) 16%,transparent),transparent 62%);filter:blur(8px) saturate(115%);opacity:.9;animation:aurora-drift 26s ease-in-out infinite alternate}@keyframes aurora-drift{0%{transform:translateZ(0) scale(1)}50%{transform:translate3d(2%,-1.5%,0) scale(1.06)}to{transform:translate3d(-2%,1.5%,0) scale(1.03)}}h1,h2,h3{margin:0;font-weight:700;letter-spacing:.2px}h2{font-size:1.05rem;color:var(--text)}a{color:var(--accent-hover)}button{font-family:inherit;font-size:.9rem;font-weight:600;letter-spacing:.02em;color:var(--md-on-secondary-container);background:var(--md-secondary-container);border:none;border-radius:var(--md-shape-full);padding:.55rem 1.15rem;cursor:pointer;transition:background-color .18s var(--md-ease-standard),box-shadow .18s var(--md-ease-standard),opacity .18s ease}button:hover{background:color-mix(in srgb,var(--md-on-secondary-container) 8%,var(--md-secondary-container))}button:active{background:color-mix(in srgb,var(--md-on-secondary-container) 12%,var(--md-secondary-container))}button:disabled{opacity:.38;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--md-primary);outline-offset:2px}button[type=submit]{background:var(--md-primary);color:var(--md-on-primary)}button[type=submit]:hover{background:color-mix(in srgb,var(--md-on-primary) 8%,var(--md-primary));box-shadow:var(--md-elevation-1)}button[type=submit]:active{background:color-mix(in srgb,var(--md-on-primary) 12%,var(--md-primary));box-shadow:none}input[type=text],input[type=password],input:not([type]),select{width:100%;font-family:inherit;font-size:.95rem;color:var(--md-on-surface);background:color-mix(in srgb,var(--md-surface-container-highest) 55%,transparent);border:1px solid var(--md-outline);border-radius:var(--md-shape-sm);padding:.65rem .85rem;transition:border-color .15s var(--md-ease-standard),box-shadow .15s var(--md-ease-standard)}input[type=text]:hover,input[type=password]:hover,input:not([type]):hover,select:hover{border-color:var(--md-on-surface)}input[type=text]:focus-visible,input[type=password]:focus-visible,input:not([type]):focus-visible,select:focus-visible{outline:none;border-color:var(--md-primary);box-shadow:inset 0 0 0 1px var(--md-primary)}input::placeholder{color:var(--text-faint)}label{display:block;font-size:.82rem;color:var(--text-muted);margin-bottom:.3rem}input[type=range]{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:6px;border-radius:999px;background:var(--border-strong);cursor:pointer}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--md-primary);border:none;box-shadow:0 0 0 4px color-mix(in srgb,var(--md-primary) 22%,transparent)}input[type=range]::-moz-range-thumb{width:16px;height:16px;border:none;border-radius:50%;background:var(--md-primary);box-shadow:0 0 0 4px color-mix(in srgb,var(--md-primary) 22%,transparent)}input[type=range]:disabled{opacity:.4}[role=alert]{color:var(--danger);font-size:.85rem;margin:.25rem 0 0}.app-shell{min-height:100%;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem 1.5rem;background:linear-gradient(180deg,color-mix(in srgb,var(--md-surface-container-high) 90%,transparent),color-mix(in srgb,var(--md-surface) 78%,transparent));backdrop-filter:blur(18px) saturate(160%);-webkit-backdrop-filter:blur(18px) saturate(160%);border-bottom:1px solid transparent}.app-header:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--md-primary) 55%,transparent) 30%,color-mix(in srgb,var(--md-tertiary) 55%,transparent) 70%,transparent);opacity:.8}.app-brand{display:flex;align-items:center;gap:.65rem;font-size:1.2rem;margin:0}.app-brand-logo{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--md-shape-md);background:linear-gradient(135deg,var(--md-primary),var(--md-tertiary));box-shadow:0 4px 14px color-mix(in srgb,var(--md-primary) 45%,transparent),inset 0 1px #ffffff40;transition:transform .35s var(--md-ease-emphasized),box-shadow .35s var(--md-ease-emphasized)}.app-brand:hover .app-brand-logo{transform:translateY(-1px) rotate(-6deg) scale(1.05);box-shadow:0 6px 20px color-mix(in srgb,var(--md-primary) 60%,transparent),inset 0 1px #ffffff4d}.app-brand-icon{color:#fff;flex:0 0 auto}.app-brand-text{font-weight:700;letter-spacing:.01em;background:linear-gradient(100deg,var(--md-primary),color-mix(in srgb,var(--md-tertiary) 70%,var(--md-primary)));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:var(--md-primary)}.theme-toggle{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;padding:0;border-radius:var(--md-shape-full);background:transparent;color:var(--md-on-surface-variant);transition:background-color .18s var(--md-ease-standard),color .18s var(--md-ease-standard),transform .3s var(--md-ease-emphasized)}.theme-toggle:hover{background:color-mix(in srgb,var(--md-on-surface) 8%,transparent);color:var(--md-primary);transform:rotate(12deg)}.theme-toggle:active{background:color-mix(in srgb,var(--md-on-surface) 12%,transparent)}.theme-toggle-icon{display:inline-flex;align-items:center;justify-content:center;line-height:0;animation:theme-icon-in .42s var(--md-ease-emphasized)}@keyframes theme-icon-in{0%{opacity:0;transform:rotate(-90deg) scale(.4)}to{opacity:1;transform:rotate(0) scale(1)}}.app-header-right{display:flex;align-items:center;gap:.6rem}.app-header-account{display:flex;align-items:center;gap:.6rem;padding-left:.7rem;margin-left:.1rem;border-left:1px solid var(--border)}.app-header-right .login-indicator{display:flex;align-items:center;gap:.6rem}.conn-pill{display:inline-flex;align-items:center;gap:.45rem;font-size:.8rem;font-weight:600;padding:.32rem .75rem;border-radius:999px;background:var(--surface-2);border:1px solid var(--border);color:var(--text-muted);white-space:nowrap;transition:background-color .25s var(--md-ease-standard),color .25s var(--md-ease-standard),border-color .25s var(--md-ease-standard)}.conn-dot{position:relative;width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}.conn-connecting .conn-dot:after,.conn-reconnecting .conn-dot:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;background:currentColor;animation:conn-ping 1.4s var(--md-ease-standard) infinite}@keyframes conn-ping{0%{transform:scale(1);opacity:.6}70%,to{transform:scale(2.6);opacity:0}}.conn-connected{color:var(--md-on-primary-container);background:var(--md-primary-container);border-color:transparent}.conn-connecting,.conn-reconnecting{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent)}.conn-failed,.conn-closed{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,transparent)}.auth-screen,.entry-screen{flex:1;display:flex;flex-direction:column;align-items:center;gap:1.25rem;padding:2rem 1.25rem}.lobby-screen{--lobby-card-radius: 22px;--lobby-card-bg: color-mix(in srgb, var(--surface) 72%, transparent);--lobby-card-border: color-mix(in srgb, var(--md-outline-variant) 55%, transparent);--lobby-card-shadow: 0 1px 1px rgba(0, 0, 0, .04), 0 18px 40px -20px rgba(0, 0, 0, .45);--lobby-blur: saturate(160%) blur(22px);width:100%;max-width:1080px;margin:0 auto;gap:1.5rem;padding-top:.5rem}.lobby-body{width:100%;display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:1.5rem;align-items:start}.lobby-main{min-width:0;display:flex;flex-direction:column;gap:1.5rem}.lobby-aside{min-width:0;position:sticky;top:1rem}.lobby-hero{position:relative;overflow:hidden;width:100%;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:1.25rem 2rem;padding:2rem 2.25rem;border-radius:var(--lobby-card-radius);border:1px solid color-mix(in srgb,var(--md-primary) 26%,var(--lobby-card-border));background:radial-gradient(120% 140% at 0% 0%,color-mix(in srgb,var(--md-primary) 22%,transparent) 0%,transparent 55%),radial-gradient(120% 160% at 100% 100%,color-mix(in srgb,var(--md-tertiary) 18%,transparent) 0%,transparent 55%),var(--lobby-card-bg);backdrop-filter:var(--lobby-blur);-webkit-backdrop-filter:var(--lobby-blur);box-shadow:var(--lobby-card-shadow)}.lobby-hero-text{min-width:0}.lobby-hero-title{margin:0;font-size:clamp(1.55rem,3vw,2.1rem);font-weight:700;letter-spacing:-.03em;line-height:1.15}.lobby-hero-tagline{margin:.5rem 0 0;color:var(--text-muted);font-size:.98rem;letter-spacing:-.01em}.lobby-stats{list-style:none;margin:0;padding:.35rem .4rem;display:flex;align-items:stretch;flex-wrap:wrap;gap:.15rem;border-radius:16px;background:color-mix(in srgb,var(--md-surface-container-lowest) 55%,transparent);border:1px solid var(--lobby-card-border)}.lobby-stat{display:flex;flex-direction:column;align-items:center;gap:.1rem;padding:.5rem 1.1rem;position:relative;color:var(--text-muted);font-size:.72rem}.lobby-stat+.lobby-stat:before{content:"";position:absolute;left:0;top:18%;bottom:18%;width:1px;background:var(--lobby-card-border)}.lobby-stat svg{color:var(--md-primary);flex-shrink:0;margin-bottom:.1rem}.lobby-stat-value{font-size:1.25rem;font-weight:700;color:var(--text);letter-spacing:-.02em;font-variant-numeric:tabular-nums;line-height:1}.lobby-stat-label{white-space:nowrap}.lobby-footer{width:100%;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.35rem .65rem;padding:.75rem 0 .5rem;font-size:.78rem;color:var(--text-faint)}.poll-board,.poll-admin-card{--poll-adopt: #2e9e5b}.poll-board{width:100%;display:flex;flex-direction:column;gap:.85rem;padding:1.35rem 1.4rem 1.5rem;background:var(--lobby-card-bg, var(--md-surface-container));border:1px solid var(--lobby-card-border, var(--border));border-radius:var(--lobby-card-radius, var(--radius-lg));backdrop-filter:var(--lobby-blur, none);-webkit-backdrop-filter:var(--lobby-blur, none);box-shadow:var(--lobby-card-shadow, none)}.poll-board-head{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.poll-board-title{display:inline-flex;align-items:center;gap:.5rem;font-size:1.15rem;font-weight:700;letter-spacing:-.02em}.poll-board-caption{margin:0;font-size:.82rem;color:var(--text-muted)}.poll-compose-toggle{display:inline-flex;align-items:center;gap:.4rem;font-size:.85rem;font-weight:600;padding:.45rem .9rem;border-radius:999px;background:var(--md-secondary-container, rgba(127, 127, 127, .14));border:1px solid transparent;color:var(--text)}.poll-compose{display:flex;flex-direction:column;gap:.55rem;padding:.85rem;background:var(--md-surface-container-high);border:1px solid var(--border);border-radius:var(--radius-md, 14px)}.poll-compose-title,.poll-compose-detail{width:100%;font:inherit;padding:.6rem .75rem;border-radius:12px;border:1px solid var(--border);background:var(--md-surface);color:var(--text);resize:vertical}.poll-compose-actions{display:flex;justify-content:flex-end}.poll-compose-submit{font-size:.9rem;font-weight:700;padding:.55rem 1.25rem;border-radius:999px;background:var(--accent);border:1px solid var(--accent);color:var(--accent-contrast)}.poll-compose-submit:disabled{opacity:.5}.poll-error{margin:0;font-size:.85rem;color:var(--danger)}.poll-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:.6rem;align-items:start}.poll-loading,.poll-empty{grid-column:1 / -1}.poll-loading,.poll-empty{margin:0;font-size:.85rem;color:var(--text-muted)}.poll-item{display:flex;flex-direction:column;gap:.55rem;padding:.8rem .95rem;background:var(--md-surface-container-high);border:1px solid var(--border);border-left:3px solid transparent;border-radius:var(--radius-md, 14px)}.poll-item.poll-adopted{border-left-color:var(--poll-adopt);background:color-mix(in srgb,var(--poll-adopt) 8%,var(--md-surface-container-high))}.poll-item.poll-rejected{border-left-color:var(--danger);background:color-mix(in srgb,var(--danger) 8%,var(--md-surface-container-high))}.poll-item-main{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.poll-item-title{font-size:.98rem;margin:0}.poll-item-detail{margin:.25rem 0 0;font-size:.85rem;color:var(--text-muted)}.poll-item-meta{margin:.3rem 0 0;font-size:.74rem;color:var(--text-faint)}.poll-badge{flex:0 0 auto;display:inline-flex;align-items:center;gap:.3rem;font-size:.78rem;font-weight:700;padding:.2rem .6rem;border-radius:999px;white-space:nowrap}.poll-badge-adopted{color:#fff;background:var(--poll-adopt)}.poll-badge-rejected{color:#fff;background:var(--danger)}.poll-vote-row{display:flex;gap:.55rem}.poll-vote{display:inline-flex;align-items:center;gap:.4rem;font-size:.85rem;font-weight:600;padding:.4rem .85rem;border-radius:999px;background:var(--md-surface);border:1px solid var(--border);color:var(--text)}.poll-vote:disabled{opacity:.55}.poll-vote-approve.is-active{color:var(--poll-adopt);border-color:var(--poll-adopt);background:color-mix(in srgb,var(--poll-adopt) 14%,transparent)}.poll-vote-oppose.is-active{color:var(--danger);border-color:var(--danger);background:color-mix(in srgb,var(--danger) 14%,transparent)}.poll-count{font-variant-numeric:tabular-nums;font-weight:700}.poll-admin-card{max-width:560px}.poll-admin-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}.poll-admin-item{display:flex;flex-direction:column;gap:.45rem;padding:.75rem .85rem;background:var(--md-surface-container-high);border:1px solid var(--border);border-radius:var(--radius-md, 14px)}.poll-admin-item-main{display:flex;align-items:center;justify-content:space-between;gap:.6rem;flex-wrap:wrap}.poll-admin-item-title{font-size:.94rem;font-weight:600}.poll-admin-item-meta{font-size:.76rem;color:var(--text-muted)}.poll-admin-item-detail{margin:0;font-size:.82rem;color:var(--text-muted)}.poll-admin-actions{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.poll-decide{display:inline-flex;align-items:center;gap:.35rem;font-size:.85rem;font-weight:700;padding:.4rem .95rem;border-radius:999px;border:1px solid transparent}.poll-decide:disabled{opacity:.55}.poll-decide-adopt{color:#fff;background:var(--poll-adopt);border-color:var(--poll-adopt)}.poll-decide-reject{color:#fff;background:var(--danger);border-color:var(--danger)}.poll-admin-decided{margin-top:.5rem;font-size:.85rem}.poll-admin-decided summary{cursor:pointer;color:var(--text-muted)}.lobby-footer-sep{opacity:.6}.lobby-footer-announcement{padding:.15rem .55rem;font-size:inherit;background:transparent;border:none;color:var(--accent);text-decoration:underline;text-underline-offset:2px;cursor:pointer}.lobby-footer-announcement:hover{color:var(--accent-hover)}.room-lobby-list{width:100%;background:var(--lobby-card-bg, var(--surface));border:1px solid var(--lobby-card-border, var(--border));border-radius:var(--lobby-card-radius, var(--radius-lg));box-shadow:var(--lobby-card-shadow, var(--shadow));backdrop-filter:var(--lobby-blur, none);-webkit-backdrop-filter:var(--lobby-blur, none);padding:1.6rem 1.6rem 1.4rem}.room-lobby-title{display:flex;align-items:center;gap:.5rem;margin:0;font-size:1.15rem;font-weight:700;letter-spacing:-.02em}.room-lobby-title-icon{color:var(--md-primary)}.room-lobby-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:1.1rem}.room-lobby-header h2{margin:0}.room-lobby-header button{background:transparent;color:var(--text-muted);padding:.4rem .95rem;font-size:.82rem;border:1px solid var(--lobby-card-border, var(--border))}.room-lobby-header button:hover:not(:disabled){background:color-mix(in srgb,var(--md-primary) 8%,transparent);color:var(--text)}.room-lobby-empty{display:flex;flex-direction:column;align-items:center;gap:.85rem;text-align:center;padding:2.5rem 1rem 2rem;color:var(--text-muted)}.room-lobby-empty-art{color:var(--md-primary);opacity:.9}.room-lobby-empty-text{margin:0;font-size:.95rem}.room-lobby-empty-cta{margin-top:.25rem}.room-lobby-items{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem;max-height:min(52vh,520px);overflow-y:auto;margin-right:-.35rem;padding-right:.35rem}.room-lobby-item{display:flex;align-items:center;gap:.85rem;background:color-mix(in srgb,var(--md-surface-container-lowest) 60%,transparent);border:1px solid color-mix(in srgb,var(--md-outline-variant) 45%,transparent);border-radius:16px;padding:.85rem 1rem}.room-lobby-item:hover{background:color-mix(in srgb,var(--md-primary) 7%,var(--md-surface-container-low));border-color:color-mix(in srgb,var(--md-primary) 35%,transparent)}.room-lobby-item-main{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;min-width:0}.room-lobby-code{font-family:var(--mono, monospace);letter-spacing:.1em;font-size:1.1rem;font-weight:700}.room-lobby-badge{font-size:.7rem;font-weight:600;color:var(--md-on-primary-container);background:var(--md-primary-container);border-radius:999px;padding:.12rem .6rem}.room-lobby-owner{font-size:.85rem;color:var(--text-muted)}.room-lobby-item-meta{display:flex;flex-direction:column;gap:.25rem;margin-left:auto;text-align:right;font-size:.78rem;color:var(--text-muted);min-width:0}.room-lobby-count,.room-lobby-now{display:inline-flex;align-items:center;justify-content:flex-end;gap:.3rem}.room-lobby-now{max-width:18ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.room-lobby-now svg,.room-lobby-count svg{flex-shrink:0;opacity:.75}.room-lobby-actions{display:flex;align-items:center;flex-shrink:0;gap:.4rem}.room-lobby-enter{flex-shrink:0;background:var(--md-primary);color:var(--md-on-primary);font-weight:600;padding:.5rem 1.25rem}.room-lobby-enter:hover{background:color-mix(in srgb,var(--md-on-primary) 8%,var(--md-primary));box-shadow:0 4px 14px color-mix(in srgb,var(--md-primary) 32%,transparent)}.room-lobby-delete{flex-shrink:0;background:transparent;border:1px solid color-mix(in srgb,var(--md-outline) 60%,transparent);color:var(--md-error);padding:.5rem .9rem}.room-lobby-delete:hover{background:color-mix(in srgb,var(--md-error) 8%,transparent);border-color:var(--md-error);color:var(--md-error)}.room-entry-card{width:100%;background:var(--lobby-card-bg, var(--surface));border:1px solid var(--lobby-card-border, var(--border));border-radius:var(--lobby-card-radius, var(--radius-lg));box-shadow:var(--lobby-card-shadow, var(--shadow));backdrop-filter:var(--lobby-blur, none);-webkit-backdrop-filter:var(--lobby-blur, none);padding:1.6rem;display:flex;flex-direction:column;gap:1.15rem}.room-entry-create,.room-entry-join{display:flex;flex-direction:column;gap:.55rem;min-width:0}.room-entry-card h2{margin:0 0 .35rem;font-size:1.15rem;font-weight:700;letter-spacing:-.02em}.room-entry-desc{margin:0 0 .85rem;font-size:.85rem;color:var(--text-muted)}.room-entry-create-btn{width:100%;padding:.75rem 1rem;font-size:.95rem;font-weight:600;border:none;border-radius:var(--md-shape-full, 999px);background:linear-gradient(135deg,var(--md-primary) 0%,color-mix(in srgb,var(--md-primary) 70%,#7c4dff) 100%);color:var(--md-on-primary);box-shadow:0 4px 14px color-mix(in srgb,var(--md-primary) 35%,transparent)}.room-entry-create-btn:hover{filter:brightness(1.06)}.room-entry-divider{display:flex;align-items:center;gap:.75rem;color:var(--text-faint);font-size:.78rem}.room-entry-divider:before,.room-entry-divider:after{content:"";flex:1;height:1px;background:var(--lobby-card-border, var(--border))}.room-entry-join{display:flex;flex-direction:column;gap:.55rem}.room-entry-join label{font-size:.82rem;color:var(--text-muted)}.room-entry-code-input{width:100%;font-family:var(--mono, monospace);font-size:1.25rem;letter-spacing:.12em;text-align:center;text-transform:uppercase;padding:.7rem .85rem;border-radius:var(--radius);border:1px solid var(--border);background:var(--bg-base)}.room-entry-code-input:focus{outline:2px solid color-mix(in srgb,var(--md-primary) 45%,transparent);border-color:var(--md-primary)}.room-entry-join-btn{width:100%;margin-top:.15rem}@media(max-width:860px){.lobby-body{grid-template-columns:1fr}.lobby-aside{position:static;order:-1}.lobby-hero{flex-direction:column;align-items:flex-start;padding:1.6rem 1.5rem}.lobby-stats{width:100%;justify-content:space-between}.lobby-stat{flex:1}.room-lobby-item{flex-wrap:wrap}.room-lobby-item-meta{width:100%;margin-left:0;flex-direction:row;flex-wrap:wrap;justify-content:flex-start;text-align:left}.room-lobby-count,.room-lobby-now{justify-content:flex-start}}section[aria-label=已登录]{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:2rem;width:100%;max-width:360px}.auth-screen{justify-content:center}.auth-card{width:100%;max-width:880px;display:grid;grid-template-columns:1.05fr 1fr;border-radius:28px;overflow:hidden;background:color-mix(in srgb,var(--md-surface) 90%,transparent);border:1px solid color-mix(in srgb,var(--md-on-surface) 9%,transparent);box-shadow:0 30px 80px -32px #00000073,0 2px 10px -4px #00000040;backdrop-filter:blur(24px) saturate(160%);-webkit-backdrop-filter:blur(24px) saturate(160%)}.auth-hero{position:relative;display:flex;flex-direction:column;justify-content:center;gap:1.4rem;padding:3rem 2.6rem;color:#fff;isolation:isolate;background:radial-gradient(130% 120% at 0% 0%,color-mix(in srgb,var(--md-tertiary) 78%,#000) 0%,transparent 55%),linear-gradient(155deg,color-mix(in srgb,var(--md-primary) 92%,#000),color-mix(in srgb,var(--md-primary) 60%,#1a1030))}.auth-hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,rgba(255,255,255,.18) 0%,transparent 32%);pointer-events:none;z-index:-1}.auth-hero-brand{display:flex;align-items:center;gap:.6rem;font-weight:700;font-size:1.02rem;letter-spacing:.01em}.auth-hero-logo{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:12px;background:#ffffff2e;border:1px solid rgba(255,255,255,.28);color:#fff}.auth-hero-headline{margin:0;font-size:clamp(1.7rem,3vw,2.3rem);line-height:1.18;font-weight:700;letter-spacing:-.02em}.auth-hero-sub{margin:0;max-width:30ch;font-size:.95rem;line-height:1.6;color:#ffffffdb}.auth-hero-points{list-style:none;margin:.4rem 0 0;padding:0;display:flex;flex-direction:column;gap:.7rem}.auth-hero-points li{display:flex;align-items:center;gap:.6rem;font-size:.9rem;color:#ffffffeb}.auth-hero-points svg{flex:none;color:#fff;opacity:.92}section[aria-label=登录].auth-form-panel{background:transparent;border:none;box-shadow:none;border-radius:0;max-width:none;width:auto;padding:2.8rem 2.6rem;display:flex;flex-direction:column;gap:1.25rem}.auth-form-head{display:flex;flex-direction:column;gap:.3rem}.auth-form-title{margin:0;font-size:1.5rem;font-weight:700;letter-spacing:-.01em}.auth-form-caption{margin:0;font-size:.88rem;color:var(--text-muted)}.auth-seg{position:relative;display:grid;grid-template-columns:1fr 1fr;padding:4px;border-radius:14px;background:color-mix(in srgb,var(--md-on-surface) 8%,transparent)}.auth-seg-btn{position:relative;z-index:1;background:transparent;border:none;padding:.55rem 0;font-size:.92rem;font-weight:600;color:var(--text-muted);cursor:pointer;border-radius:10px;transition:color .25s var(--md-ease-standard)}.auth-seg-btn.is-active{color:var(--text)}.auth-seg-thumb{position:absolute;top:4px;bottom:4px;width:calc(50% - 4px);border-radius:10px;background:var(--surface);box-shadow:var(--md-elevation-1);transition:transform .32s var(--md-ease-emphasized)}.auth-seg-thumb-login{transform:translate(0)}.auth-seg-thumb-register{transform:translate(100%)}section[aria-label=登录].auth-form-panel form{display:flex;flex-direction:column;gap:.95rem;margin:0}.auth-field{display:flex;flex-direction:column;gap:.4rem}.auth-field label{font-size:.82rem;font-weight:600;color:var(--text-muted)}.auth-field input{width:100%;padding:.7rem .85rem;border-radius:12px;border:1px solid color-mix(in srgb,var(--md-on-surface) 14%,transparent);background:color-mix(in srgb,var(--md-surface) 70%,transparent);font-size:.95rem;color:var(--text);transition:border-color .2s var(--md-ease-standard),box-shadow .2s var(--md-ease-standard),background-color .2s var(--md-ease-standard)}.auth-field input:focus{outline:none;border-color:var(--md-primary);box-shadow:0 0 0 4px color-mix(in srgb,var(--md-primary) 18%,transparent);background:var(--surface)}.auth-invite-input{position:relative;display:flex;align-items:center}.auth-invite-input svg{position:absolute;left:.8rem;color:var(--md-primary);pointer-events:none}.auth-invite-input input{padding-left:2.3rem;letter-spacing:.14em;font-family:var(--mono, ui-monospace, "SF Mono", Menlo, monospace);text-transform:uppercase}.auth-submit{margin-top:.35rem;width:100%;padding:.8rem 1rem;border:none;border-radius:14px;font-size:.98rem;font-weight:700;color:#fff;cursor:pointer;background:linear-gradient(180deg,color-mix(in srgb,var(--md-primary) 96%,#fff) 0%,var(--md-primary) 100%);box-shadow:0 10px 24px -10px color-mix(in srgb,var(--md-primary) 80%,transparent);transition:transform .18s var(--md-ease-emphasized),box-shadow .22s var(--md-ease-emphasized),filter .2s var(--md-ease-standard)}.auth-submit:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.04);box-shadow:0 14px 30px -10px color-mix(in srgb,var(--md-primary) 85%,transparent)}.auth-submit:active:not(:disabled){transform:translateY(0)}.auth-submit:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}@media(max-width:720px){.auth-card{grid-template-columns:1fr;max-width:440px}.auth-hero{padding:2rem 1.8rem;gap:1rem}.auth-hero-headline{font-size:1.5rem}.auth-hero-points{display:none}section[aria-label=登录].auth-form-panel{padding:2rem 1.8rem}}.app-header-right section[aria-label=已登录]{background:transparent;border:none;box-shadow:none;padding:0;margin:0;max-width:none;flex-direction:row;align-items:center;gap:.55rem}.app-header-right section[aria-label=已登录] p{display:inline-flex;align-items:center;gap:.45rem;margin:0;padding:.3rem .7rem .3rem .45rem;border-radius:var(--md-shape-full);background:var(--surface-2);font-size:.82rem;color:var(--text);white-space:nowrap}.app-header-right section[aria-label=已登录] p:before{content:"";width:20px;height:20px;border-radius:50%;flex:none;background:linear-gradient(135deg,var(--md-primary),var(--md-tertiary));box-shadow:inset 0 1px #ffffff4d}.app-header-right section[aria-label=已登录] button{padding:.35rem .85rem;font-size:.82rem;transition:background-color .18s var(--md-ease-standard),transform .22s var(--md-ease-emphasized),box-shadow .22s var(--md-ease-emphasized)}.app-header-right section[aria-label=已登录] button:hover{transform:translateY(-1px);box-shadow:var(--md-elevation-1)}section[aria-label=创建或加入房间],section[aria-label=房间信息]{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:2rem;width:100%;max-width:420px;display:flex;flex-direction:column;gap:1.5rem}section[aria-label=创建或加入房间]>div,section[aria-label=创建或加入房间] form{display:flex;flex-direction:column;gap:.7rem}section[aria-label=创建或加入房间] h2{font-size:1rem;color:var(--text-muted);text-transform:none}#room-code-input{text-align:center;font-size:1.4rem;font-weight:700;letter-spacing:.4rem;padding:.75rem;text-transform:uppercase;font-variant-numeric:tabular-nums}#room-code-input::placeholder{font-size:.95rem;font-weight:500;letter-spacing:normal;text-transform:none}#room-code-input:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}section[aria-label=创建或加入房间] form button[type=submit]{padding:.7rem;font-size:1rem}section[aria-label=创建或加入房间]>div>button{background:var(--accent);border-color:var(--accent);color:var(--accent-contrast);padding:.7rem;font-size:1rem}section[aria-label=创建或加入房间]>div>button:hover{background:var(--accent-hover)}[data-testid=room-error],[data-testid=room-code-hint]{background:var(--danger-soft);border:1px solid color-mix(in srgb,var(--md-error) 40%,transparent);border-radius:var(--radius-sm);padding:.55rem .75rem;color:var(--danger)}.room-view{flex:1;display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:1.25rem;padding:1.5rem;max-width:1200px;width:100%;margin:0 auto;align-items:start}.room-main{display:flex;flex-direction:column;gap:1.25rem;min-width:0}.room-sidebar{display:flex;flex-direction:column;gap:1.25rem;position:sticky;top:80px}.player-panel,.queue-panel,.members-panel,.music-search-panel{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:1.35rem}.panel-title{display:flex;align-items:center;gap:.55rem;font-size:1.05rem}.panel-title-icon{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:7px;border-radius:var(--md-shape-md);color:var(--md-on-secondary-container);background:var(--md-secondary-container)}.members-panel .panel-title .online-count{margin-left:auto}.player-panel{display:flex;flex-direction:column;gap:1.25rem;overflow:hidden;background:linear-gradient(150deg,color-mix(in srgb,var(--md-primary) 22%,var(--md-surface-container-high)),color-mix(in srgb,var(--md-tertiary) 10%,var(--md-surface-container-high)) 70%,var(--md-surface-container-high));border-color:transparent;border-radius:var(--md-shape-xl);box-shadow:var(--md-elevation-2)}.player-hero{display:flex;align-items:center;gap:1.25rem;min-width:0}.cover-art{position:relative;flex:0 0 auto;width:132px;height:132px;border-radius:50%;overflow:hidden;background:radial-gradient(circle at 50% 50%,var(--md-surface-container-highest),var(--md-surface-container-low));box-shadow:var(--md-elevation-3);display:flex;align-items:center;justify-content:center}.cover-art:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;pointer-events:none;background:repeating-radial-gradient(circle at 50% 50%,rgba(0,0,0,.16) 0 1px,transparent 1px 5px);box-shadow:inset 0 0 0 5px color-mix(in srgb,#000 28%,transparent),inset 0 0 0 6px color-mix(in srgb,var(--md-primary) 45%,transparent),inset 0 0 18px #00000059;opacity:.7}.cover-image{width:100%;height:100%;object-fit:cover;display:block}.cover-fallback{display:inline-flex;align-items:center;justify-content:center;color:color-mix(in srgb,var(--md-primary) 70%,var(--md-on-surface-variant));opacity:.85}.cover-spindle{position:absolute;top:50%;left:50%;width:22px;height:22px;transform:translate(-50%,-50%);border-radius:50%;background:var(--md-surface-container-high);box-shadow:inset 0 0 0 4px color-mix(in srgb,var(--md-primary) 55%,transparent),0 0 0 2px color-mix(in srgb,#000 25%,transparent)}.cover-art.is-spinning{animation:cover-spin 16s linear infinite}@keyframes cover-spin{to{transform:rotate(360deg)}}.player-meta{display:flex;flex-direction:column;gap:.55rem;min-width:0;flex:1}.now-playing-label{font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:color-mix(in srgb,var(--md-primary) 80%,var(--md-on-surface-variant))}.player-panel .now-playing{display:flex;flex-direction:column;gap:.15rem;min-width:0}.player-panel .now-playing .track-title{font-size:1.45rem;font-weight:800;line-height:1.2;letter-spacing:.2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-panel .now-playing .track-artist{font-size:.92rem;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-panel .track-title.empty{color:var(--text-faint);font-weight:600;font-size:1.2rem}.transport-controls{display:flex;align-items:center;justify-content:center;gap:.85rem}.transport-btn{display:inline-flex;align-items:center;justify-content:center;width:52px;height:52px;padding:0;border-radius:50%;color:var(--md-on-secondary-container);background:var(--md-secondary-container)}.transport-btn.transport-next{width:64px;height:64px;color:var(--md-on-primary);background:var(--md-primary);box-shadow:var(--md-elevation-2)}.transport-btn.transport-next:hover{background:color-mix(in srgb,var(--md-on-primary) 10%,var(--md-primary))}.transport-controls button.repeat-toggle{display:inline-flex;align-items:center;gap:.4rem;font-size:.82rem;padding:.5rem .95rem}.transport-controls button.repeat-toggle[aria-pressed=true]{background:var(--md-primary-container);color:var(--md-on-primary-container)}.repeat-label{line-height:1}.skip-vote-banner{display:flex;flex-direction:column;gap:.65rem;padding:.85rem 1rem;background:var(--md-secondary-container);color:var(--md-on-secondary-container);border:1px solid transparent;border-radius:var(--radius);box-shadow:var(--shadow-sm)}.skip-vote-head{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.skip-vote-badge{flex-shrink:0;padding:.15rem .55rem;font-size:.75rem;font-weight:700;color:var(--md-on-secondary-container);background:color-mix(in srgb,var(--md-on-secondary-container) 14%,transparent);border-radius:999px}.skip-vote-title{font-size:.95rem;font-weight:600}.skip-vote-tally{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap;font-size:.9rem}.skip-vote-count{font-weight:700}.skip-vote-count.approve{color:var(--accent-hover)}.skip-vote-count.reject{color:var(--danger)}.skip-vote-threshold{color:var(--text-muted)}.skip-vote-actions{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.skip-vote-actions .skip-vote-yes.chosen{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.skip-vote-actions .skip-vote-no.chosen{border-color:var(--danger);color:var(--danger);background:var(--danger-soft)}.skip-vote-voted{font-size:.8rem;color:var(--text-muted)}.seek-control,.volume-control{display:flex;align-items:center;gap:.75rem}@property --progress{syntax: "<number>"; inherits: true; initial-value: 0;}.seek-control .progress-track{--progress: 0;position:relative;flex:1;height:18px;background:transparent;cursor:default}.seek-control .progress-active{position:absolute;left:0;top:50%;width:max(0px,calc(var(--progress) * 100% - 6px));height:14px;transform:translateY(-50%);background:linear-gradient(90deg,var(--md-primary),var(--md-tertiary));-webkit-mask:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='14'%3E%3Cpath%20d='M0%207%20q%206%20-5%2012%200%20t%2012%200'%20fill='none'%20stroke='white'%20stroke-width='3'%20stroke-linecap='round'/%3E%3C/svg%3E") repeat-x left center;mask:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='14'%3E%3Cpath%20d='M0%207%20q%206%20-5%2012%200%20t%2012%200'%20fill='none'%20stroke='white'%20stroke-width='3'%20stroke-linecap='round'/%3E%3C/svg%3E") repeat-x left center;-webkit-mask-size:24px 14px;mask-size:24px 14px}.seek-control .progress-track.is-playing .progress-active{animation:progress-wave-flow 1.1s linear infinite}@keyframes progress-wave-flow{to{-webkit-mask-position:-24px center;mask-position:-24px center}}.seek-control .progress-inactive{position:absolute;right:0;left:min(100%,calc(var(--progress) * 100% + 6px));top:50%;height:4px;border-radius:999px;transform:translateY(-50%);background:color-mix(in srgb,var(--md-on-surface) 20%,transparent)}.seek-control .progress-thumb{position:absolute;left:calc(var(--progress) * 100%);top:50%;width:4px;height:16px;border-radius:999px;transform:translate(-50%,-50%);background:var(--md-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--md-primary) 16%,transparent)}.seek-control .progress-stop{position:absolute;right:0;top:50%;width:4px;height:4px;border-radius:50%;transform:translateY(-50%);background:var(--md-primary)}.seek-control .position,.seek-control .duration{font-size:.8rem;color:var(--text-muted);font-variant-numeric:tabular-nums;min-width:44px;text-align:center}.volume-control{justify-content:flex-end}.volume-control label{margin:0}.volume-control input[type=range]{width:130px}.volume-control .volume-value{font-size:.8rem;color:var(--text-muted);min-width:40px;text-align:right}.track-thumb{flex:0 0 auto;width:40px;height:40px;border-radius:var(--md-shape-sm);object-fit:cover;background:var(--md-surface-container-highest);box-shadow:0 1px 2px #00000040}.track-thumb-empty{display:inline-flex;align-items:center;justify-content:center;color:var(--text-faint)}.queue-panel .queue-add{width:100%;margin:.75rem 0;text-align:left}.queue-empty,.members-empty,.no-results{color:var(--text-faint);font-size:.88rem;padding:.75rem 0;text-align:center}.queue-list{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.35rem}.queue-item{display:flex;align-items:center;gap:.75rem;padding:.55rem .7rem;border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid transparent}.queue-item:hover{background:var(--surface-hover)}.queue-item.current{background:var(--md-primary-container);color:var(--md-on-primary-container);border-color:transparent}.queue-item .track-index{width:1.5rem;color:var(--text-faint);font-variant-numeric:tabular-nums;text-align:right}.queue-item .track-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.queue-item .track-duration{font-size:.8rem;color:var(--text-muted);font-variant-numeric:tabular-nums}.queue-item .now-playing{font-size:.72rem;font-weight:700;color:var(--accent-hover);background:var(--bg-base);padding:.15rem .5rem;border-radius:999px}.queue-item .queue-fav{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border-radius:50%;background:transparent;border:1px solid transparent;color:var(--text-muted);cursor:pointer}.queue-item .queue-fav:hover{background:var(--surface-hover);color:#f5c518}.queue-item .queue-fav.active{color:#f5c518}.queue-item .queue-remove{padding:.3rem .65rem;font-size:.8rem;background:transparent;border-color:var(--border);color:var(--text-muted)}.queue-item .queue-remove:hover{color:var(--danger);border-color:var(--danger);background:var(--danger-soft)}.members-list{list-style:none;margin:.75rem 0 0;padding:0;display:flex;flex-direction:column;gap:.4rem}.member{display:flex;align-items:center;gap:.6rem;padding:.5rem .65rem;border-radius:var(--radius-sm);background:var(--surface-2)}.member-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.member-avatar{position:relative;flex:0 0 auto;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--md-secondary-container);color:var(--md-on-secondary-container);overflow:visible}.member-avatar-img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block}.member-avatar-icon{opacity:.75}.member-avatar:after{content:"";position:absolute;right:-1px;bottom:-1px;width:11px;height:11px;border-radius:50%;background:var(--accent);border:2px solid var(--surface-2);box-sizing:border-box}.member-offline{opacity:.6}.member-offline .member-avatar:after{background:var(--text-faint)}.host-badge{font-size:.72rem;font-weight:700;color:var(--accent-contrast);background:var(--accent);padding:.12rem .5rem;border-radius:999px}.member-status{font-size:.78rem;color:var(--text-faint)}.member-transfer{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:999px;background:transparent;color:var(--text-faint);cursor:pointer;transition:background .15s ease,color .15s ease}.member-transfer:hover,.member-transfer:focus-visible{background:var(--accent-soft, rgba(127, 127, 127, .16));color:var(--accent)}.member-transfer-icon{display:block}.music-search-panel{display:flex;flex-direction:column;gap:.9rem}.provider-selector{display:flex;align-items:center;gap:.6rem}.provider-selector label{margin:0;white-space:nowrap}.provider-selector select{width:auto;flex:1}.provider-status{font-size:.78rem;font-weight:600;color:var(--text-muted);padding:.25rem .6rem;border-radius:999px;background:var(--surface-2);white-space:nowrap}.authorize-prompt{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.85rem;display:flex;flex-direction:column;gap:.6rem}.authorize-prompt p{margin:0;font-size:.88rem;color:var(--text-muted)}.authorize-prompt button{align-self:flex-start;background:var(--accent);border-color:var(--accent);color:var(--accent-contrast)}.search-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:.6rem}.search-form label{width:100%}.search-form input[type=text]{flex:1;min-width:0}.search-form .keyword-error{width:100%}.search-results{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}.search-results li{display:flex;align-items:center;gap:.75rem;padding:.55rem .7rem;border-radius:var(--radius-sm);background:var(--surface-2)}.search-results li:hover{background:var(--surface-hover)}.search-results .track-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-results .track-duration{font-size:.8rem;color:var(--text-muted);font-variant-numeric:tabular-nums}@media(max-width:860px){.room-view{grid-template-columns:1fr;padding:1rem}.room-sidebar{position:static}.app-header{padding:.65rem 1rem;flex-wrap:wrap}.app-brand{font-size:1.05rem}.app-brand-logo{width:36px;height:36px}.app-header-right{gap:.5rem}}@media(max-width:600px){.app-header-right{flex-wrap:wrap;justify-content:flex-end}.app-header-account{padding-left:.5rem;gap:.45rem}.app-header-right section[aria-label=已登录] p{max-width:8.5rem;overflow:hidden;text-overflow:ellipsis}.player-hero{flex-direction:column;text-align:center;gap:1rem}.cover-art{width:116px;height:116px}.player-meta{align-items:center;width:100%}.player-panel .now-playing .track-title{white-space:normal}.seek-control{width:100%}}@media(max-width:520px){.transport-controls{flex-wrap:wrap}.repeat-label{display:none}.transport-controls button.repeat-toggle{width:52px;height:52px;justify-content:center;padding:0;border-radius:50%}section[aria-label=房间信息] [data-testid=room-code]{font-size:1.3rem;letter-spacing:.16em;text-indent:.16em}}.form-hint{margin:0;font-size:.82rem;color:var(--text-faint)}.link-button{align-self:flex-start;margin-top:.9rem;background:none;border:none;padding:0;color:var(--accent-hover);font-weight:600}.link-button:hover{background:none;border:none;text-decoration:underline;color:var(--accent-hover)}section[aria-label=登录] [data-testid=login-error]{background:var(--danger-soft);border:1px solid color-mix(in srgb,var(--md-error) 40%,transparent);border-radius:var(--radius-sm);padding:.55rem .75rem;margin:0}.room-info-bar{display:block;background:transparent;border:none;box-shadow:none;padding:0}.room-ticket{display:flex;align-items:stretch;border-radius:var(--md-shape-lg);overflow:hidden;box-shadow:var(--md-elevation-1)}.room-ticket-stub{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:.45rem;flex:none;padding:.7rem .75rem;background:linear-gradient(160deg,var(--md-primary),color-mix(in srgb,var(--md-primary) 78%,var(--md-tertiary)));color:var(--md-on-primary)}.room-ticket-stub-label{font-size:.72rem;font-weight:700;letter-spacing:.3em;text-indent:.3em;writing-mode:vertical-rl;text-orientation:upright}.room-ticket-body{display:flex;flex:1;min-width:0;flex-direction:column;justify-content:center;gap:.55rem;padding:.75rem .85rem;background:var(--md-surface-container-high);border:1px solid var(--md-outline-variant);border-left:none}.room-code-pill{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;width:100%;padding:.4rem .9rem;border-radius:var(--md-shape-full);background:color-mix(in srgb,var(--md-primary) 12%,var(--md-surface));border:1px solid color-mix(in srgb,var(--md-primary) 32%,transparent);cursor:pointer;transition:border-color .18s var(--md-ease-standard),background-color .18s var(--md-ease-standard)}.room-code-pill:hover{border-color:color-mix(in srgb,var(--md-primary) 55%,transparent);background:color-mix(in srgb,var(--md-primary) 18%,var(--md-surface))}.room-code-pill:focus-visible{outline:2px solid var(--md-primary);outline-offset:2px}.room-code-value{max-width:100%;font-size:1.25rem;font-weight:800;line-height:1.15;letter-spacing:.12em;text-indent:.12em;color:var(--md-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-variant-numeric:tabular-nums}.room-invite-button{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;width:100%;gap:.4rem;padding:.45rem .9rem;font-size:.82rem}.room-invite-label{display:inline-flex;align-items:center;gap:.4rem}.room-invite-button svg{flex:none}.copy-reveal{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;gap:.3rem;font-size:.9rem;font-weight:700;letter-spacing:.04em;color:var(--md-on-primary);background:var(--md-primary);opacity:0;pointer-events:none}.app-header-right .leave-room{display:inline-flex;align-items:center;gap:.35rem;background:transparent;border:1px solid var(--md-outline);color:var(--md-error);transition:background-color .18s var(--md-ease-standard),border-color .18s var(--md-ease-standard),transform .22s var(--md-ease-emphasized),box-shadow .22s var(--md-ease-emphasized)}.app-header-right .leave-room svg{flex:none;transition:transform .22s var(--md-ease-emphasized)}.app-header-right .leave-room:hover{background:var(--danger-soft);border-color:var(--danger);transform:translateY(-1px);box-shadow:var(--md-elevation-1)}.app-header-right .leave-room:hover svg{transform:translate(2px)}.share-actions{display:flex;gap:.5rem}.share-link{font-size:.8rem;color:var(--text-muted);word-break:break-all;background:var(--bg-base);border:1px solid var(--border);border-radius:var(--radius-sm);padding:.5rem .7rem;margin:0}.room-error-block{grid-column:1 / -1;display:flex;flex-direction:column;gap:.5rem;background:var(--danger-soft);border:1px solid color-mix(in srgb,var(--md-error) 40%,transparent);border-radius:var(--radius-sm);padding:.75rem}.room-error-block [data-testid=room-error]{margin:0}.room-error-block button{align-self:flex-start}.reauth-hint{margin:0;font-size:.85rem;color:var(--text-muted)}.room-connecting{font-size:.85rem;color:var(--text-muted);text-align:center}button,.room-lobby-item,.queue-item,.member,.search-results li,.player-panel .now-playing{transform-origin:center}button{transition:background-color .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease}.room-lobby-item,.queue-item,.member,.search-results li{transition:background-color .16s ease,border-color .16s ease}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.audio-unblock-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:var(--md-scrim);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:announcement-fade .25s ease}.audio-unblock-button{display:inline-flex;align-items:center;gap:.7rem;font-size:1.1rem;font-weight:700;padding:.95rem 1.8rem;border-radius:999px;background:var(--accent);border:1px solid var(--accent);color:var(--accent-contrast);box-shadow:var(--shadow)}.audio-unblock-button:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.audio-unblock-icon{flex:0 0 auto}.update-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:var(--md-scrim);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:announcement-fade .25s ease}.update-card{width:100%;max-width:420px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:.85rem;padding:1.8rem 1.6rem 1.5rem;background:var(--md-surface-container-high);border:1px solid transparent;border-radius:var(--radius-lg);box-shadow:var(--shadow);transform-origin:center}.update-icon{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:999px;color:var(--md-on-primary-container);background:var(--md-primary-container)}.update-title{margin:0;font-size:1.2rem}.update-body{margin:0;font-size:.92rem;line-height:1.6;color:var(--text-muted)}.update-body strong{color:var(--accent)}.update-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem;margin-top:.25rem}.update-refresh{display:inline-flex;align-items:center;gap:.5rem;font-size:1rem;font-weight:700;padding:.7rem 1.5rem;border-radius:999px;background:var(--accent);border:1px solid var(--accent);color:var(--accent-contrast);box-shadow:var(--shadow)}.update-refresh:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.update-snooze{font-size:.92rem;font-weight:600;padding:.7rem 1.2rem;border-radius:999px;background:transparent;border:1px solid var(--md-outline, rgba(127, 127, 127, .4));color:var(--text-muted)}.update-snooze:hover{color:var(--text)}.update-hint{margin:.2rem 0 0;font-size:.78rem;line-height:1.5;color:var(--text-muted)}.update-hint kbd{font-family:inherit;font-size:.74rem;font-weight:600;padding:.05rem .4rem;border-radius:6px;background:var(--md-surface-container-highest, rgba(127, 127, 127, .16));border:1px solid var(--md-outline, rgba(127, 127, 127, .3));color:var(--text)}.announcement-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:1.25rem;background:var(--md-scrim);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:announcement-fade .25s ease}@keyframes announcement-fade{0%{opacity:0}to{opacity:1}}.announcement-card{width:100%;max-width:520px;max-height:calc(100vh - 2.5rem);overflow-y:auto;display:flex;flex-direction:column;gap:1.1rem;padding:1.5rem 1.6rem;background:var(--md-surface-container-high);border:1px solid transparent;border-radius:var(--radius-lg);box-shadow:var(--shadow);transform-origin:center}.announcement-head{display:flex;flex-direction:column;gap:.45rem}.announcement-badge{align-self:flex-start;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--md-on-primary-container);background:var(--md-primary-container);border:1px solid transparent;border-radius:999px;padding:.2rem .65rem}.announcement-head h2{font-size:1.25rem}.announcement-meta{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:.55rem;font-size:.88rem;color:var(--text-muted)}.announcement-meta strong{color:var(--text)}.announcement-version{font-size:.78rem;font-weight:600;color:var(--md-on-tertiary-container);background:var(--md-tertiary-container);border:1px solid transparent;border-radius:999px;padding:.15rem .6rem}.announcement-body{display:flex;flex-direction:column;gap:1rem}.announcement-body section{display:flex;flex-direction:column;gap:.45rem}.announcement-body h3{margin:0;font-size:.95rem;color:var(--accent-hover)}.announcement-body ul,.announcement-body ol{margin:0;padding-left:1.25rem;display:flex;flex-direction:column;gap:.3rem;font-size:.9rem;color:var(--text)}.announcement-body p{margin:0;font-size:.88rem;line-height:1.6;color:var(--text-muted)}.announcement-history{margin-top:.2rem}.announcement-history>summary{display:inline-flex;align-items:center;gap:.4rem;cursor:pointer;list-style:none;width:fit-content;font-size:.85rem;color:var(--accent-hover);opacity:.85;-webkit-user-select:none;user-select:none}.announcement-history>summary::-webkit-details-marker{display:none}.announcement-history>summary:before{content:"";width:.42em;height:.42em;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(-45deg);transition:transform .2s var(--md-ease-standard)}.announcement-history[open]>summary:before{transform:rotate(45deg)}.announcement-history>summary:hover{opacity:1;text-decoration:underline}.announcement-history>ul{margin-top:.5rem}.announcement-foot{display:flex;justify-content:flex-end}.announcement-foot button{width:100%;padding:.65rem 1rem;font-size:.95rem}.profile-entry{padding:.4rem .9rem;font-size:.88rem;transition:background-color .18s var(--md-ease-standard),transform .22s var(--md-ease-emphasized),box-shadow .22s var(--md-ease-emphasized)}.profile-entry:hover{transform:translateY(-1px);box-shadow:var(--md-elevation-1)}.profile-entry.icon-entry{width:40px;height:40px;padding:0;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}.profile-entry.icon-entry svg{display:block}.profile-card{max-width:880px;padding:0;gap:0;overflow-x:hidden}.profile-hero{position:relative}.profile-banner{position:relative;height:156px;border-radius:var(--radius-lg) var(--radius-lg) 0 0;background-color:var(--md-surface-container-highest);background-image:linear-gradient(135deg,color-mix(in srgb,var(--md-primary) 85%,transparent),color-mix(in srgb,var(--md-tertiary) 80%,transparent) 55%,color-mix(in srgb,var(--md-secondary) 82%,transparent));background-size:cover;background-position:center;overflow:hidden;animation:profile-banner-in .6s var(--md-ease-emphasized)}.profile-banner:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,transparent 45%,rgba(0,0,0,.32));pointer-events:none}@keyframes profile-banner-in{0%{opacity:0;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}.profile-edit-btn{display:inline-flex;align-items:center;justify-content:center;gap:.3rem;font-size:.76rem;font-weight:600;letter-spacing:.01em;padding:.34rem .65rem;border-radius:999px;color:#fff;background:#0000006b;border:1px solid rgba(255,255,255,.28);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);cursor:pointer;transition:background-color .2s var(--md-ease-standard),transform .2s var(--md-ease-emphasized)}.profile-edit-btn:hover:not(:disabled){background:#0009;transform:translateY(-1px)}.profile-edit-btn:disabled{opacity:.65;cursor:default}.profile-banner-edit{position:absolute;right:.85rem;bottom:.85rem;z-index:1}.profile-identity{display:flex;align-items:flex-end;gap:1rem;padding:0 1.6rem;margin-top:-46px;position:relative}.profile-avatar-slot{position:relative;flex:none}.profile-avatar{position:relative;width:96px;height:96px;border-radius:28px;display:flex;align-items:center;justify-content:center;color:var(--md-on-surface-variant);background:var(--md-surface-container-highest);border:4px solid var(--md-surface-container-high);box-shadow:var(--md-elevation-2);overflow:hidden;animation:profile-avatar-pop .55s var(--md-ease-emphasized) .1s both}@keyframes profile-avatar-pop{0%{opacity:0;transform:scale(.6) translateY(8px)}60%{transform:scale(1.06) translateY(0)}to{opacity:1;transform:scale(1) translateY(0)}}.profile-avatar img{width:100%;height:100%;object-fit:cover}.profile-avatar-busy{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:30px;height:30px;border-radius:50%;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;background:#00000040;animation:profile-spin .8s linear infinite}@keyframes profile-spin{to{transform:rotate(360deg)}}.profile-avatar-edit{position:absolute;right:-3px;bottom:-3px;width:30px;height:30px;padding:0;border-radius:50%;background:var(--md-primary);color:var(--md-on-primary);border:2px solid var(--md-surface-container-high)}.profile-avatar-edit:hover:not(:disabled){background:var(--md-primary);transform:scale(1.1)}.profile-identity-text{min-width:0;padding-bottom:.4rem}.profile-name{margin:0;font-size:1.45rem;font-weight:700;letter-spacing:.01em;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-joined{margin:.1rem 0 0;font-size:.8rem;color:var(--text-muted)}.profile-image-error{padding:0 1.6rem;margin-top:.55rem}.profile-body{display:grid;grid-template-columns:1fr 1fr;align-items:start;gap:.85rem;padding:1.25rem 1.6rem .2rem}.profile-section{display:flex;flex-direction:column;gap:.6rem;padding:1rem 1.05rem;border:1px solid var(--border);border-radius:var(--md-shape-lg);background:color-mix(in srgb,var(--md-surface-container) 55%,transparent);min-width:0}.profile-danger{grid-column:1 / -1}.profile-section h3{margin:0 0 .1rem;font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--text-muted)}.profile-grid{display:grid;grid-template-columns:max-content 1fr;gap:.4rem 1rem;margin:0}.profile-grid dt{color:var(--text-muted);font-size:.88rem}.profile-grid dd{margin:0;color:var(--text);font-size:.9rem;word-break:break-all}.profile-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.82rem;color:var(--text-muted)}.profile-inline{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.profile-inline input[type=text]{flex:1 1 12rem}.profile-inline input[type=range]{flex:1 1 8rem}.profile-inline .volume-value{min-width:3rem;text-align:right;font-variant-numeric:tabular-nums;font-weight:600;color:var(--text)}.profile-stack{display:flex;flex-direction:column;gap:.5rem}.profile-error{color:var(--danger);font-size:.85rem;margin:0}.profile-success{color:var(--accent-hover);font-size:.85rem;margin:0}.profile-loading{padding:2rem 1.6rem;color:var(--text-muted)}.profile-card>.profile-error{padding:1.5rem 1.6rem 0}.profile-card .announcement-foot{padding:1rem 1.6rem 1.45rem}.profile-danger{border-color:color-mix(in srgb,var(--danger) 35%,var(--border));background:color-mix(in srgb,var(--danger-soft) 35%,transparent)}.profile-danger h3{color:var(--danger)}.danger-button{background:var(--md-error-container);color:var(--md-on-error-container)}.danger-button:hover:not(:disabled){background:color-mix(in srgb,var(--md-on-error-container) 8%,var(--md-error-container));color:var(--md-on-error-container)}.profile-confirm{display:flex;flex-direction:column;gap:.55rem;padding:.85rem;background:var(--danger-soft);border:1px solid var(--danger);border-radius:var(--radius-sm)}.profile-confirm p{margin:0;font-size:.88rem;color:var(--text)}.profile-confirm-actions{display:flex;gap:.6rem;justify-content:flex-end}@media(max-width:760px){.profile-body{grid-template-columns:1fr}}@media(max-width:600px){.profile-banner{height:124px}.profile-identity{padding:0 1.1rem;margin-top:-40px}.profile-avatar{width:82px;height:82px;border-radius:24px}.profile-name{font-size:1.25rem}.profile-body{padding:1.1rem 1.1rem .2rem}.profile-card .announcement-foot{padding:.9rem 1.1rem 1.2rem}}.search-fav{flex:0 0 auto;display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;padding:0;border-radius:50%;background:transparent;border:1px solid transparent;color:var(--text-muted);cursor:pointer}.search-fav:hover{background:var(--surface-hover);color:#f5c518}.search-fav.active{color:#f5c518}.favorites-entry{display:inline-flex;align-items:center;gap:.35rem}.favorites-card{max-width:720px;padding:0;gap:0;overflow-x:hidden}.favorites-head{display:flex;align-items:center;flex-wrap:wrap;gap:.55rem;padding:1.35rem 1.6rem .4rem}.favorites-head h2{margin:0;font-size:1.2rem}.favorites-badge{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;background:var(--accent-soft);color:#f5c518}.favorites-hint{flex-basis:100%;margin:0;font-size:.82rem;color:var(--text-muted)}.favorites-body{display:flex;flex-direction:column;gap:1rem;padding:.6rem 1.6rem .4rem}.favorites-notice{margin:0}.favorites-section{display:flex;flex-direction:column;gap:.6rem;padding:1rem 1.05rem;border:1px solid var(--border);border-radius:var(--md-shape-lg);background:color-mix(in srgb,var(--md-surface-container) 55%,transparent);min-width:0}.favorites-section-title{display:flex;align-items:center;gap:.45rem;margin:0;font-size:.82rem;font-weight:700;letter-spacing:.04em;color:var(--text-muted)}.favorites-section-title svg{color:#f5c518}.favorites-empty{margin:0;font-size:.85rem;color:var(--text-muted)}.favorites-empty-inline{padding:.5rem .2rem;list-style:none}.favorites-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem;max-height:21rem;overflow-y:auto;padding-right:.25rem;scrollbar-width:thin;overscroll-behavior:contain}.favorites-playlist-tracks{max-height:16rem}.favorites-list::-webkit-scrollbar{width:8px}.favorites-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:999px}.favorites-list::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}.favorites-item{display:flex;align-items:center;gap:.6rem;padding:.45rem .6rem;border-radius:var(--radius-sm);background:var(--surface-2)}.favorites-item:hover{background:var(--surface-hover)}.favorites-item .track-title{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.favorites-item .track-duration{font-size:.78rem;color:var(--text-muted);font-variant-numeric:tabular-nums}.favorites-item-actions{display:inline-flex;align-items:center;gap:.25rem}.favorites-act{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;border-radius:50%;border:1px solid transparent;background:transparent;color:var(--text-muted);cursor:pointer}.favorites-act:hover:not(:disabled){background:var(--surface-hover);color:var(--accent)}.favorites-act:disabled{opacity:.4;cursor:not-allowed}.favorites-act-danger:hover:not(:disabled){color:var(--danger)}.favorites-playlist-picker{position:relative;display:inline-flex}.favorites-playlist-picker select{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer;border:none}.favorites-create{display:flex;gap:.5rem}.favorites-create input{flex:1;min-width:0}.favorites-create-btn{display:inline-flex;align-items:center;gap:.3rem;white-space:nowrap}.favorites-playlists{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem}.favorites-playlist{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);overflow:hidden}.favorites-playlist-head{display:flex;align-items:center;gap:.4rem;padding:.4rem .55rem}.favorites-playlist-toggle{width:28px;height:28px;padding:0;border-radius:var(--radius-sm);background:transparent;border:none;color:var(--text-muted);cursor:pointer}.favorites-caret{display:inline-block;transition:transform .18s var(--md-ease-standard)}.favorites-caret.open{transform:rotate(90deg)}.favorites-playlist-name{flex:1;min-width:0;display:flex;align-items:center;gap:.5rem;padding:.3rem .4rem;text-align:left;background:transparent;border:none;color:inherit;font-weight:600;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.favorites-playlist-count{flex:0 0 auto;font-size:.74rem;font-weight:500;color:var(--text-muted)}.favorites-rename-input{flex:1;min-width:0}.favorites-playlist-actions{display:inline-flex;align-items:center;gap:.25rem}.favorites-enqueue-playlist{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .6rem;font-size:.8rem;white-space:nowrap}.favorites-confirm{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;padding:.55rem .7rem;font-size:.85rem;background:color-mix(in srgb,var(--danger-soft) 35%,transparent);border-top:1px solid var(--border)}.favorites-confirm span{flex:1;min-width:0}.favorites-playlist-tracks{padding:.2rem .55rem .55rem}@media(max-width:600px){.favorites-body{padding:.6rem 1.1rem .4rem}.favorites-head{padding:1.1rem 1.1rem .4rem}}.invite-entry{display:inline-flex;align-items:center;gap:.35rem}.invite-card{max-width:600px;padding:0;gap:0;text-align:left}.invite-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap;padding:1.4rem 1.6rem .6rem}.invite-head-titles{min-width:0}.invite-title{display:flex;align-items:center;gap:.45rem;margin:0;font-size:1.2rem}.invite-title svg{color:var(--md-primary)}.invite-caption{margin:.35rem 0 0;font-size:.85rem;color:var(--text-muted);line-height:1.5}.invite-create{flex:none;display:inline-flex;align-items:center;gap:.35rem;padding:.55rem 1rem;border:none;border-radius:999px;font-size:.9rem;font-weight:700;color:#fff;cursor:pointer;background:var(--md-primary);box-shadow:0 8px 20px -10px color-mix(in srgb,var(--md-primary) 80%,transparent);transition:transform .18s var(--md-ease-emphasized),filter .2s var(--md-ease-standard)}.invite-create:hover:not(:disabled){transform:translateY(-1px);filter:brightness(1.05)}.invite-create:disabled{opacity:.55;cursor:not-allowed}.invite-error{margin:0 1.6rem .4rem;background:var(--danger-soft);border:1px solid color-mix(in srgb,var(--md-error) 40%,transparent);border-radius:var(--radius-sm);padding:.55rem .75rem;font-size:.85rem}.invite-body{padding:.4rem 1.6rem .6rem}.invite-loading,.invite-empty{margin:1rem 0;color:var(--text-muted);font-size:.9rem}.invite-summary{margin:.2rem 0 .7rem;font-size:.82rem;color:var(--text-muted)}.invite-summary strong{color:var(--md-primary)}.invite-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem;max-height:22rem;overflow-y:auto;overscroll-behavior:contain}.invite-item{display:flex;align-items:center;gap:.7rem;padding:.6rem .8rem;border-radius:14px;border:1px solid var(--border);background:color-mix(in srgb,var(--md-surface-container) 60%,transparent)}.invite-item.is-used{opacity:.6}.invite-code{font-family:var(--mono, ui-monospace, "SF Mono", Menlo, monospace);font-size:1rem;font-weight:700;letter-spacing:.16em;color:var(--text)}.invite-item.is-used .invite-code{text-decoration:line-through}.invite-status{font-size:.78rem;padding:.15rem .55rem;border-radius:999px;white-space:nowrap}.invite-status-open{color:var(--md-primary);background:color-mix(in srgb,var(--md-primary) 14%,transparent)}.invite-status-used{color:var(--text-muted);background:color-mix(in srgb,var(--md-on-surface) 8%,transparent)}.invite-actions{margin-left:auto;display:inline-flex;align-items:center;gap:.35rem}.invite-icon-btn{display:inline-flex;align-items:center;gap:.3rem;padding:.35rem .6rem;border-radius:10px;border:1px solid var(--border);background:var(--surface);color:var(--text-muted);font-size:.8rem;cursor:pointer;transition:background-color .18s var(--md-ease-standard),color .18s var(--md-ease-standard),border-color .18s var(--md-ease-standard)}.invite-icon-btn:hover{color:var(--md-primary);border-color:var(--md-primary)}.invite-icon-danger:hover{color:var(--danger);border-color:var(--danger);background:var(--danger-soft)}@media(max-width:600px){.invite-head{padding:1.1rem 1.1rem .5rem}.invite-body{padding:.4rem 1.1rem .6rem}.invite-item{flex-wrap:wrap}.invite-actions{margin-left:0}}.m3-loader{display:inline-block;flex:none;color:var(--accent);transform-origin:50% 50%;will-change:transform}.m3-loader.is-animated{animation:m3-loader-spin 1.6s linear infinite}@keyframes m3-loader-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.m3-loader.is-animated{animation:none}}.global-busy{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .7rem;border-radius:var(--md-shape-full, 999px);background:var(--accent-soft);color:var(--accent);font-size:.8rem;font-weight:600;white-space:nowrap;animation:global-busy-in .22s var(--md-ease-standard, ease) both}.global-busy .m3-loader{color:currentColor}@keyframes global-busy-in{0%{opacity:0;transform:translateY(-4px) scale(.96)}to{opacity:1;transform:none}}.transport-btn .m3-loader,.search-form button .m3-loader{color:currentColor}.search-loading{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:1.4rem 0;color:var(--text-muted, var(--text));font-size:.85rem}.search-loading .m3-loader{color:var(--accent)}.search-results button .m3-loader{color:currentColor}
