:root{--color-primary-100: #e8faf0;--color-primary-200: #c2f5d9;--color-primary-300: #9cefc2;--color-primary-400: #4de294;--color-primary-500: #1ed760;--color-primary-600: #1db954;--color-primary-700: #169c46;--color-primary-800: #107d38;--color-primary-900: #0a5e2a;--color-neutral-0: #000000;--color-neutral-50: #0a0a0a;--color-neutral-100: #121212;--color-neutral-150: #181818;--color-neutral-200: #282828;--color-neutral-300: #3e3e3e;--color-neutral-400: #535353;--color-neutral-500: #b3b3b3;--color-neutral-600: #a7a7a7;--color-neutral-700: #8e8e8e;--color-neutral-800: #6a6a6a;--color-neutral-900: #ffffff;--color-success: #1ed760;--color-success-hover: #1db954;--color-warning: #ffa726;--color-warning-hover: #fb8c00;--color-error: #f15e6c;--color-error-hover: #e53935;--color-info: #29b6f6;--color-info-hover: #039be5;--space-0: 0;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--space-20: 80px;--space-24: 96px;--space-32: 128px;--space-xs: var(--space-1);--space-sm: var(--space-2);--space-md: var(--space-4);--space-lg: var(--space-6);--space-xl: var(--space-8);--space-2xl: var(--space-12);--space-3xl: var(--space-16);--font-family-base: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-family-mono: "SF Mono", Monaco, "Cascadia Code", "Roboto Mono", Consolas, "Courier New", monospace;--font-size-xs: 11px;--font-size-sm: 12px;--font-size-base: 14px;--font-size-md: 16px;--font-size-lg: 18px;--font-size-xl: 20px;--font-size-2xl: 24px;--font-size-3xl: 28px;--font-size-4xl: 32px;--font-size-5xl: 40px;--font-size-6xl: 48px;--line-height-tight: 1.2;--line-height-snug: 1.3;--line-height-normal: 1.5;--line-height-relaxed: 1.6;--line-height-loose: 1.8;--font-weight-light: 300;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semibold: 600;--font-weight-bold: 700;--font-weight-extrabold: 800;--font-weight-black: 900;--letter-spacing-tight: -.05em;--letter-spacing-normal: 0;--letter-spacing-wide: .025em;--letter-spacing-wider: .05em;--letter-spacing-widest: .1em;--radius-none: 0;--radius-sm: 4px;--radius-base: 6px;--radius-md: 8px;--radius-lg: 12px;--radius-xl: 16px;--radius-2xl: 24px;--radius-full: 9999px;--radius: var(--radius-md);--border-width-0: 0;--border-width-1: 1px;--border-width-2: 2px;--border-width-4: 4px;--border-width-8: 8px;--shadow-xs: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-sm: 0 1px 3px 0 rgba(0, 0, 0, .1), 0 1px 2px 0 rgba(0, 0, 0, .06);--shadow-base: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-md: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-lg: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--shadow-xl: 0 25px 50px -12px rgba(0, 0, 0, .25);--shadow-2xl: 0 35px 60px -15px rgba(0, 0, 0, .3);--glow-primary: 0 0 20px rgba(30, 215, 96, .3);--glow-error: 0 0 20px rgba(241, 94, 108, .3);--glow-info: 0 0 20px rgba(41, 182, 246, .3);--duration-instant: .1s;--duration-fast: .15s;--duration-base: .2s;--duration-medium: .3s;--duration-slow: .4s;--duration-slower: .6s;--duration-slowest: 1s;--ease-linear: linear;--ease-in: cubic-bezier(.4, 0, 1, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--ease-in-out: cubic-bezier(.4, 0, .2, 1);--ease-bounce: cubic-bezier(.68, -.55, .265, 1.55);--ease-smooth: cubic-bezier(.4, 0, .2, 1);--z-base: 0;--z-dropdown: 1000;--z-sticky: 1100;--z-fixed: 1200;--z-overlay: 1300;--z-modal: 1400;--z-popover: 1500;--z-toast: 1600;--z-tooltip: 1700;--z-max: 9999;--container-sm: 640px;--container-md: 768px;--container-lg: 1024px;--container-xl: 1280px;--container-2xl: 1536px;--height-header: 56px;--height-player-mini: 72px;--height-player-full: 100vh;--height-nav: 56px;--height-button-sm: 44px;--height-button-base: 44px;--height-button-lg: 52px;--safe-area-top: env(safe-area-inset-top, 0px);--safe-area-right: env(safe-area-inset-right, 0px);--safe-area-bottom: env(safe-area-inset-bottom, 0px);--safe-area-left: env(safe-area-inset-left, 0px);--opacity-0: 0;--opacity-5: .05;--opacity-10: .1;--opacity-20: .2;--opacity-30: .3;--opacity-40: .4;--opacity-50: .5;--opacity-60: .6;--opacity-70: .7;--opacity-80: .8;--opacity-90: .9;--opacity-100: 1;--blur-none: 0;--blur-sm: 4px;--blur-base: 8px;--blur-md: 12px;--blur-lg: 16px;--blur-xl: 24px;--blur-2xl: 40px;--blur-3xl: 64px;--breakpoint-sm: 640px;--breakpoint-md: 768px;--breakpoint-lg: 1024px;--breakpoint-xl: 1280px;--breakpoint-2xl: 1536px}@media(max-width:640px){:root{--font-size-base: 13px;--space-md: 12px;--space-lg: 16px}}@media(prefers-reduced-motion:reduce){:root{--duration-instant: 0ms;--duration-fast: 0ms;--duration-base: 0ms;--duration-medium: 0ms;--duration-slow: 0ms}}:root,[data-theme=dark]{--bg-base: var(--color-neutral-0);--bg-elevated: var(--color-neutral-100);--bg-surface: var(--color-neutral-150);--bg-card: var(--color-neutral-150);--bg-hover: var(--color-neutral-200);--bg-active: var(--color-neutral-300);--bg-overlay: rgba(0, 0, 0, .8);--bg: var(--bg-base);--text: var(--text-primary);--text-muted: var(--text-secondary);--accent-dark: var(--accent-hover);--danger: var(--error);--text-primary: var(--color-neutral-900);--text-secondary: var(--color-neutral-500);--text-tertiary: var(--color-neutral-600);--text-disabled: var(--color-neutral-700);--text-inverse: var(--color-neutral-0);--border-color: rgba(255, 255, 255, .05);--border-color-strong: rgba(255, 255, 255, .1);--border-color-hover: rgba(255, 255, 255, .15);--accent: var(--color-primary-500);--accent-hover: var(--color-primary-600);--accent-active: var(--color-primary-700);--accent-subtle: rgba(30, 215, 96, .1);--success: var(--color-success);--success-hover: var(--color-success-hover);--success-subtle: rgba(30, 215, 96, .1);--error: var(--color-error);--error-hover: var(--color-error-hover);--error-subtle: rgba(241, 94, 108, .1);--warning: var(--color-warning);--warning-hover: var(--color-warning-hover);--warning-subtle: rgba(255, 167, 38, .1);--info: var(--color-info);--info-hover: var(--color-info-hover);--info-subtle: rgba(41, 182, 246, .1);--shadow-color: rgba(0, 0, 0, .5);--gradient-primary: linear-gradient(135deg, var(--color-primary-500) 0%, var(--color-primary-600) 100%);--gradient-hero: linear-gradient(180deg, var(--bg-surface) 0%, var(--bg-base) 100%);--gradient-overlay: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, .8) 100%)}[data-theme=light]{--bg-base: #ffffff;--bg-elevated: #f8f9fa;--bg-surface: #f1f3f5;--bg-card: #ffffff;--bg-hover: #e9ecef;--bg-active: #dee2e6;--bg-overlay: rgba(255, 255, 255, .95);--text-primary: var(--color-neutral-0);--text-secondary: var(--color-neutral-800);--text-tertiary: var(--color-neutral-700);--text-disabled: var(--color-neutral-600);--text-inverse: var(--color-neutral-900);--border-color: rgba(0, 0, 0, .08);--border-color-strong: rgba(0, 0, 0, .12);--border-color-hover: rgba(0, 0, 0, .16);--accent: var(--color-primary-600);--accent-hover: var(--color-primary-700);--accent-active: var(--color-primary-800);--accent-subtle: rgba(30, 215, 96, .08);--success: var(--color-primary-600);--success-hover: var(--color-primary-700);--success-subtle: rgba(30, 215, 96, .08);--error: var(--color-error);--error-hover: var(--color-error-hover);--error-subtle: rgba(241, 94, 108, .08);--warning: var(--color-warning);--warning-hover: var(--color-warning-hover);--warning-subtle: rgba(255, 167, 38, .08);--info: var(--color-info);--info-hover: var(--color-info-hover);--info-subtle: rgba(41, 182, 246, .08);--shadow-color: rgba(0, 0, 0, .1);--gradient-primary: linear-gradient(135deg, var(--color-primary-600) 0%, var(--color-primary-700) 100%);--gradient-hero: linear-gradient(180deg, #ffffff 0%, #f8f9fa 100%);--gradient-overlay: linear-gradient(180deg, rgba(255, 255, 255, 0) 0%, rgba(255, 255, 255, .95) 100%)}[data-theme=oled]{--bg-base: #000000;--bg-elevated: #000000;--bg-surface: #0a0a0a;--bg-card: #0a0a0a;--bg-hover: #1a1a1a;--bg-active: #2a2a2a;--bg-overlay: rgba(0, 0, 0, .95);--text-primary: #ffffff;--text-secondary: #b3b3b3;--text-tertiary: #8e8e8e;--text-disabled: #6a6a6a;--text-inverse: #000000;--border-color: rgba(255, 255, 255, .03);--border-color-strong: rgba(255, 255, 255, .08);--border-color-hover: rgba(255, 255, 255, .12);--accent: #00ff88;--accent-hover: #00e67a;--accent-active: #00cc6b;--accent-subtle: rgba(0, 255, 136, .1);--success: #00ff88;--success-hover: #00e67a;--success-subtle: rgba(0, 255, 136, .1);--error: #ff5c6c;--error-hover: #ff4757;--error-subtle: rgba(255, 92, 108, .1);--warning: #ffb74d;--warning-hover: #ffa726;--warning-subtle: rgba(255, 183, 77, .1);--info: #4fc3f7;--info-hover: #29b6f6;--info-subtle: rgba(79, 195, 247, .1);--shadow-color: transparent;--shadow-xs: none;--shadow-sm: none;--shadow-base: none;--shadow-md: none;--shadow-lg: 0 0 0 1px rgba(255, 255, 255, .05);--shadow-xl: 0 0 0 1px rgba(255, 255, 255, .08);--gradient-primary: linear-gradient(135deg, #00ff88 0%, #00cc6b 100%);--gradient-hero: linear-gradient(180deg, #0a0a0a 0%, #000000 100%);--gradient-overlay: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 1) 100%)}[data-theme=custom]{--custom-accent: var(--accent, #1ed760);--custom-bg: var(--bg-base, #000000);--custom-text: var(--text-primary, #ffffff);--accent: var(--custom-accent);--accent-hover: color-mix(in srgb, var(--custom-accent) 85%, black);--accent-active: color-mix(in srgb, var(--custom-accent) 70%, black);--accent-subtle: color-mix(in srgb, var(--custom-accent) 10%, transparent);--bg-base: var(--custom-bg);--text-primary: var(--custom-text)}@media(prefers-contrast:high){:root{--border-color: rgba(255, 255, 255, .2);--border-color-strong: rgba(255, 255, 255, .3);--text-secondary: var(--color-neutral-500)}[data-theme=light]{--border-color: rgba(0, 0, 0, .2);--border-color-strong: rgba(0, 0, 0, .3);--text-secondary: var(--color-neutral-700)}}body{transition:background-color var(--duration-medium) var(--ease-in-out),color var(--duration-medium) var(--ease-in-out)}body.theme-switching *{transition:none!important}body{font-family:var(--font-family-base);font-size:var(--font-size-base);line-height:var(--line-height-normal);font-weight:var(--font-weight-normal);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}.text-display{font-size:var(--font-size-6xl);line-height:var(--line-height-tight);font-weight:var(--font-weight-black);letter-spacing:var(--letter-spacing-tight)}.text-h1,h1{font-size:var(--font-size-4xl);line-height:var(--line-height-tight);font-weight:var(--font-weight-extrabold);letter-spacing:var(--letter-spacing-tight);margin:0 0 var(--space-4) 0}.text-h2,h2{font-size:var(--font-size-3xl);line-height:var(--line-height-snug);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-tight);margin:0 0 var(--space-3) 0}.text-h3,h3{font-size:var(--font-size-2xl);line-height:var(--line-height-snug);font-weight:var(--font-weight-bold);letter-spacing:var(--letter-spacing-normal);margin:0 0 var(--space-3) 0}.text-h4,h4{font-size:var(--font-size-xl);line-height:var(--line-height-normal);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-normal);margin:0 0 var(--space-2) 0}.text-h5,h5{font-size:var(--font-size-lg);line-height:var(--line-height-normal);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-normal);margin:0 0 var(--space-2) 0}.text-h6,h6{font-size:var(--font-size-md);line-height:var(--line-height-normal);font-weight:var(--font-weight-semibold);letter-spacing:var(--letter-spacing-wide);margin:0 0 var(--space-2) 0}.text-body-lg,.text-lg{font-size:var(--font-size-lg);line-height:var(--line-height-relaxed);font-weight:var(--font-weight-normal)}.text-body,.text-base,p{font-size:var(--font-size-base);line-height:var(--line-height-normal);font-weight:var(--font-weight-normal);margin:0 0 var(--space-4) 0}.text-body-sm,.text-sm{font-size:var(--font-size-sm);line-height:var(--line-height-normal);font-weight:var(--font-weight-normal)}.text-xs{font-size:var(--font-size-xs);line-height:var(--line-height-normal);font-weight:var(--font-weight-medium)}.text-caption{font-size:var(--font-size-xs);line-height:var(--line-height-normal);font-weight:var(--font-weight-medium);color:var(--text-secondary);letter-spacing:var(--letter-spacing-wide);text-transform:uppercase}.text-overline{font-size:var(--font-size-xs);line-height:var(--line-height-normal);font-weight:var(--font-weight-bold);color:var(--text-tertiary);letter-spacing:var(--letter-spacing-wider);text-transform:uppercase}.text-label{font-size:var(--font-size-sm);line-height:var(--line-height-normal);font-weight:var(--font-weight-semibold);color:var(--text-primary)}.text-code,code{font-family:var(--font-family-mono);font-size:.9em;background:var(--bg-hover);padding:2px 6px;border-radius:var(--radius-sm);color:var(--accent)}pre code{display:block;padding:var(--space-4);overflow-x:auto;background:var(--bg-surface);border-radius:var(--radius-md);font-size:var(--font-size-sm);line-height:var(--line-height-relaxed)}.font-light{font-weight:var(--font-weight-light)}.font-normal{font-weight:var(--font-weight-normal)}.font-medium{font-weight:var(--font-weight-medium)}.font-semibold{font-weight:var(--font-weight-semibold)}.font-bold{font-weight:var(--font-weight-bold)}.font-extrabold{font-weight:var(--font-weight-extrabold)}.font-black{font-weight:var(--font-weight-black)}.text-primary{color:var(--text-primary)}.text-secondary{color:var(--text-secondary)}.text-tertiary{color:var(--text-tertiary)}.text-disabled{color:var(--text-disabled)}.text-inverse{color:var(--text-inverse)}.text-accent{color:var(--accent)}.text-success{color:var(--success)}.text-error{color:var(--error)}.text-warning{color:var(--warning)}.text-info{color:var(--info)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-uppercase{text-transform:uppercase}.text-lowercase{text-transform:lowercase}.text-capitalize{text-transform:capitalize}.text-underline{text-decoration:underline}.text-line-through{text-decoration:line-through}.text-no-underline{text-decoration:none}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.text-clamp-3{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.text-nowrap{white-space:nowrap}.text-wrap{white-space:normal}.text-pre{white-space:pre}.text-pre-wrap{white-space:pre-wrap}::selection{background:var(--accent-subtle);color:var(--text-primary)}a{color:var(--accent);text-decoration:none;transition:color var(--duration-fast) var(--ease-out)}a:hover{color:var(--accent-hover);text-decoration:underline}a:active{color:var(--accent-active)}a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}ul,ol{margin:0 0 var(--space-4) 0;padding-left:var(--space-6)}li{margin-bottom:var(--space-1)}ul ul,ol ol,ul ol,ol ul{margin-bottom:0}.list-unstyled{list-style:none;padding-left:0}@media(max-width:640px){.text-display{font-size:var(--font-size-4xl)}.text-h1,h1{font-size:var(--font-size-3xl)}.text-h2,h2{font-size:var(--font-size-2xl)}.text-h3,h3{font-size:var(--font-size-xl)}}@media(max-width:480px){.text-display{font-size:var(--font-size-3xl)}.text-h1,h1{font-size:var(--font-size-2xl)}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.not-sr-only{position:static;width:auto;height:auto;padding:0;margin:0;overflow:visible;clip:auto;white-space:normal}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes slideInUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideInDown{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideInLeft{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes slideInRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}@keyframes scaleIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@keyframes scaleOut{0%{transform:scale(1);opacity:1}to{transform:scale(.9);opacity:0}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes pulseScale{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes shake{0%,to{transform:translate(0)}10%,30%,50%,70%,90%{transform:translate(-10px)}20%,40%,60%,80%{transform:translate(10px)}}@keyframes wiggle{0%,to{transform:rotate(0)}25%{transform:rotate(-3deg)}75%{transform:rotate(3deg)}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes progressBar{0%{transform:scaleX(0);transform-origin:left}to{transform:scaleX(1);transform-origin:left}}@keyframes glow{0%,to{box-shadow:0 0 5px var(--accent)}50%{box-shadow:0 0 20px var(--accent)}}@keyframes ripple{0%{transform:scale(0);opacity:1}to{transform:scale(4);opacity:0}}@keyframes equalizerBar1{0%,to{height:3px}50%{height:12px}}@keyframes equalizerBar2{0%,to{height:8px}30%{height:4px}70%{height:14px}}@keyframes equalizerBar3{0%,to{height:6px}40%{height:12px}80%{height:2px}}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-fadeIn{animation:fadeIn var(--duration-medium) var(--ease-out)}.animate-fadeOut{animation:fadeOut var(--duration-medium) var(--ease-out)}.animate-slideInUp{animation:slideInUp var(--duration-medium) var(--ease-out)}.animate-slideInDown{animation:slideInDown var(--duration-medium) var(--ease-out)}.animate-slideInLeft{animation:slideInLeft var(--duration-medium) var(--ease-out)}.animate-slideInRight{animation:slideInRight var(--duration-medium) var(--ease-out)}.animate-scaleIn{animation:scaleIn var(--duration-fast) var(--ease-out)}.animate-scaleOut{animation:scaleOut var(--duration-fast) var(--ease-out)}.animate-bounce{animation:bounce var(--duration-slow) var(--ease-in-out) infinite}.animate-pulse{animation:pulse var(--duration-slower) var(--ease-in-out) infinite}.animate-pulseScale{animation:pulseScale var(--duration-slower) var(--ease-in-out) infinite}.animate-spin{animation:spin var(--duration-slowest) linear infinite}.animate-shake{animation:shake var(--duration-slow) var(--ease-in-out)}.animate-wiggle{animation:wiggle var(--duration-slow) var(--ease-in-out)}.animate-shimmer{animation:shimmer var(--duration-slower) linear infinite;background:linear-gradient(90deg,var(--bg-surface) 0%,var(--bg-hover) 50%,var(--bg-surface) 100%);background-size:1000px 100%}.animate-glow{animation:glow var(--duration-slower) var(--ease-in-out) infinite}.animate-rotate{animation:rotate 10s linear infinite}.transition-all{transition:all var(--duration-base) var(--ease-in-out)}.transition-colors{transition:color var(--duration-base) var(--ease-in-out),background-color var(--duration-base) var(--ease-in-out),border-color var(--duration-base) var(--ease-in-out)}.transition-opacity{transition:opacity var(--duration-base) var(--ease-in-out)}.transition-transform{transition:transform var(--duration-base) var(--ease-in-out)}.transition-shadow{transition:box-shadow var(--duration-base) var(--ease-in-out)}.duration-instant{transition-duration:var(--duration-instant)}.duration-fast{transition-duration:var(--duration-fast)}.duration-base{transition-duration:var(--duration-base)}.duration-medium{transition-duration:var(--duration-medium)}.duration-slow{transition-duration:var(--duration-slow)}.ease-linear{transition-timing-function:var(--ease-linear)}.ease-in{transition-timing-function:var(--ease-in)}.ease-out{transition-timing-function:var(--ease-out)}.ease-in-out{transition-timing-function:var(--ease-in-out)}.ease-bounce{transition-timing-function:var(--ease-bounce)}.hover-scale:hover{transform:scale(1.05)}.hover-scale-sm:hover{transform:scale(1.02)}.hover-scale-lg:hover{transform:scale(1.1)}.hover-lift:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.hover-brightness:hover{filter:brightness(1.1)}.hover-opacity:hover{opacity:.8}.hover-glow:hover{box-shadow:var(--glow-primary)}.active-scale:active{transform:scale(.95)}.active-scale-sm:active{transform:scale(.98)}.focus-ring:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.focus-ring-inset:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.page-enter{opacity:0;transform:translate(20px)}.page-enter-active{opacity:1;transform:translate(0);transition:opacity var(--duration-medium) var(--ease-out),transform var(--duration-medium) var(--ease-out)}.page-leave{opacity:1;transform:translate(0)}.page-leave-active{opacity:0;transform:translate(-20px);transition:opacity var(--duration-fast) var(--ease-in),transform var(--duration-fast) var(--ease-in)}.skeleton{background:linear-gradient(90deg,var(--bg-surface) 0%,var(--bg-hover) 50%,var(--bg-surface) 100%);background-size:200% 100%;animation:shimmer 1.5s ease-in-out infinite;border-radius:var(--radius-md)}.skeleton-text{height:1em;margin-bottom:.5em}.skeleton-title{height:1.5em;width:60%;margin-bottom:.75em}.skeleton-avatar{width:40px;height:40px;border-radius:50%}.skeleton-thumbnail{width:100%;padding-bottom:100%;border-radius:var(--radius-md)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.animate-spin,.animate-bounce,.animate-pulse,.animate-rotate{animation:none!important}}.will-change-transform{will-change:transform}.will-change-opacity{will-change:opacity}.gpu-accelerate{transform:translateZ(0);backface-visibility:hidden;perspective:1000px}@keyframes trackToCurrent{0%{opacity:.8;transform:scale(1);box-shadow:none}50%{transform:scale(1.03)}to{opacity:1;transform:scale(1);box-shadow:0 0 20px #ff2d554d}}@keyframes trackToPlayed{0%{opacity:1;transform:scale(1);filter:brightness(1)}to{opacity:.6;transform:scale(.98);filter:brightness(.8)}}@keyframes trackEnterQueue{0%{opacity:0;transform:translate(20px)}to{opacity:.8;transform:translate(0)}}@keyframes trackLeaveQueue{0%{opacity:1;transform:translate(0) scale(1)}to{opacity:0;transform:translate(-20px) scale(.95)}}@keyframes glowPulse{0%,to{box-shadow:0 0 15px #ff2d5533}50%{box-shadow:0 0 25px #ff2d5566}}.track-to-current{animation:trackToCurrent .6s var(--ease-out) forwards}.track-to-played{animation:trackToPlayed .4s var(--ease-in-out) forwards}.track-enter{animation:trackEnterQueue .3s var(--ease-out) forwards}.track-leave{animation:trackLeaveQueue .3s var(--ease-in) forwards}.current-track-glow{animation:glowPulse 3s var(--ease-in-out) infinite}.avatar{position:relative;display:inline-flex;align-items:center;justify-content:center;overflow:hidden;background:var(--color-neutral-700);color:var(--color-neutral-100);font-weight:var(--font-weight-medium);-webkit-user-select:none;user-select:none;flex-shrink:0}.avatar--xs{width:24px;height:24px;font-size:var(--font-size-xs)}.avatar--sm{width:32px;height:32px;font-size:var(--font-size-sm)}.avatar--base{width:40px;height:40px;font-size:var(--font-size-base)}.avatar--lg{width:56px;height:56px;font-size:var(--font-size-lg)}.avatar--xl{width:80px;height:80px;font-size:var(--font-size-xl)}.avatar--circle{border-radius:var(--radius-full)}.avatar--rounded{border-radius:var(--radius-md)}.avatar--square{border-radius:var(--radius-sm)}.avatar__image{width:100%;height:100%;object-fit:cover}.avatar__initials{display:flex;align-items:center;justify-content:center;width:100%;height:100%;text-transform:uppercase;background:linear-gradient(135deg,var(--color-primary-600),var(--color-primary-400))}.avatar__icon{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--color-neutral-300)}.avatar__icon svg{width:60%;height:60%}.avatar__status{position:absolute;bottom:0;right:0;width:25%;height:25%;border-radius:var(--radius-full);border:2px solid var(--color-bg);box-shadow:var(--shadow-sm)}.avatar--xs .avatar__status,.avatar--sm .avatar__status{width:8px;height:8px;border-width:1.5px}.avatar__status--online{background-color:var(--color-success-500)}.avatar__status--offline{background-color:var(--color-neutral-500)}.avatar__status--away{background-color:var(--color-warning-500)}.avatar__status--busy{background-color:var(--color-danger-500)}.avatar--loading{background:var(--color-neutral-800)}.avatar__skeleton{width:100%;height:100%;background:linear-gradient(90deg,var(--color-neutral-800) 0%,var(--color-neutral-700) 50%,var(--color-neutral-800) 100%);background-size:200% 100%;animation:shimmer 1.5s infinite}.avatar-group{display:inline-flex;flex-direction:row-reverse;align-items:center}.avatar-group .avatar{margin-left:calc(var(--spacing-2) * -1);border:2px solid var(--color-bg);transition:transform var(--transition-fast)}.avatar-group .avatar:hover{transform:translateY(-2px);z-index:1}.avatar-group .avatar:first-child{margin-left:0}.avatar--with-badge{position:relative}.avatar--with-badge:after{content:attr(data-badge);position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 var(--spacing-1);background:var(--color-danger-500);color:var(--color-white);font-size:10px;font-weight:var(--font-weight-semibold);line-height:18px;text-align:center;border-radius:var(--radius-full);border:2px solid var(--color-bg)}.avatar[role=img]{cursor:default}.avatar--clickable{cursor:pointer;transition:transform var(--transition-fast),box-shadow var(--transition-fast)}.avatar--clickable:hover{transform:scale(1.05);box-shadow:var(--shadow-md)}.avatar--clickable:active{transform:scale(.98)}.badge{display:inline-flex;align-items:center;gap:var(--spacing-1);font-weight:var(--font-weight-medium);line-height:1;border-radius:var(--radius-full);white-space:nowrap;transition:all var(--transition-fast)}.badge--sm{padding:var(--spacing-1) var(--spacing-2);font-size:var(--font-size-xs)}.badge--base{padding:calc(var(--spacing-1) + 2px) var(--spacing-3);font-size:var(--font-size-sm)}.badge--lg{padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-base)}.badge--default{background-color:var(--color-neutral-700);color:var(--color-neutral-100)}.badge--primary{background-color:var(--color-primary-600);color:var(--color-white)}.badge--success{background-color:var(--color-success-600);color:var(--color-white)}.badge--warning{background-color:var(--color-warning-500);color:var(--color-neutral-900)}.badge--danger{background-color:var(--color-danger-600);color:var(--color-white)}.badge--info{background-color:var(--color-info-600);color:var(--color-white)}.badge--dot{padding-left:var(--spacing-2)}.badge__dot{width:6px;height:6px;border-radius:var(--radius-full);background-color:currentColor;flex-shrink:0}.badge--sm.badge--dot{padding-left:var(--spacing-1-5)}.badge--sm .badge__dot{width:4px;height:4px}.badge--lg .badge__dot{width:8px;height:8px}.badge__label{flex:1}.badge__remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;margin-left:var(--spacing-1);margin-right:calc(var(--spacing-1) * -1);padding:0;background:none;border:none;border-radius:var(--radius-full);color:currentColor;opacity:.7;cursor:pointer;transition:all var(--transition-fast)}.badge__remove:hover{opacity:1;background-color:#0000001a}.badge__remove:active{transform:scale(.9)}.badge--sm .badge__remove{width:14px;height:14px}.badge--lg .badge__remove{width:18px;height:18px}.badge--outline-default{background-color:transparent;color:var(--color-neutral-300);border:1px solid var(--color-neutral-600)}.badge--outline-primary{background-color:transparent;color:var(--color-primary-400);border:1px solid var(--color-primary-600)}.badge--outline-success{background-color:transparent;color:var(--color-success-400);border:1px solid var(--color-success-600)}.badge--outline-warning{background-color:transparent;color:var(--color-warning-400);border:1px solid var(--color-warning-500)}.badge--outline-danger{background-color:transparent;color:var(--color-danger-400);border:1px solid var(--color-danger-600)}.badge--outline-info{background-color:transparent;color:var(--color-info-400);border:1px solid var(--color-info-600)}.badge--subtle-default{background-color:var(--color-neutral-800);color:var(--color-neutral-300)}.badge--subtle-primary{background-color:rgba(var(--color-primary-500-rgb),.15);color:var(--color-primary-300)}.badge--subtle-success{background-color:rgba(var(--color-success-500-rgb),.15);color:var(--color-success-300)}.badge--subtle-warning{background-color:rgba(var(--color-warning-500-rgb),.15);color:var(--color-warning-300)}.badge--subtle-danger{background-color:rgba(var(--color-danger-500-rgb),.15);color:var(--color-danger-300)}.badge--subtle-info{background-color:rgba(var(--color-info-500-rgb),.15);color:var(--color-info-300)}.badge-group{display:inline-flex;align-items:center;gap:var(--spacing-2);flex-wrap:wrap}.badge--pill{min-width:20px;height:20px;padding:0 var(--spacing-2);font-size:11px;font-weight:var(--font-weight-semibold);border-radius:var(--radius-full)}.badge--pill.badge--sm{min-width:16px;height:16px;padding:0 var(--spacing-1-5);font-size:10px}.badge--pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.badge--with-icon{display:inline-flex;align-items:center;gap:var(--spacing-1-5)}.badge--with-icon svg{width:14px;height:14px}.badge--sm.badge--with-icon svg{width:12px;height:12px}.badge--lg.badge--with-icon svg{width:16px;height:16px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);padding:0 var(--space-4);border:none;border-radius:var(--radius-full);font-family:var(--font-family-base);font-weight:var(--font-weight-semibold);font-size:var(--font-size-base);line-height:1;text-decoration:none;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;overflow:hidden;transition:background-color var(--duration-fast) var(--ease-out),color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out)}.btn:before{content:"";position:absolute;top:50%;left:50%;width:0;height:0;border-radius:50%;background:#ffffff4d;transform:translate(-50%,-50%);transition:width .6s,height .6s}.btn:active:before{width:300px;height:300px;transition:width 0s,height 0s}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled,.btn-disabled{opacity:.5;cursor:not-allowed}.btn-sm{height:var(--height-button-sm);padding:0 var(--space-3);font-size:var(--font-size-sm);gap:var(--space-1)}.btn-base{height:var(--height-button-base);padding:0 var(--space-4);font-size:var(--font-size-base)}.btn-lg{height:var(--height-button-lg);padding:0 var(--space-6);font-size:var(--font-size-md);gap:var(--space-3)}.btn-full{width:100%}.btn-primary{background:var(--accent);color:var(--text-inverse)}.btn-primary:hover:not(:disabled){background:var(--accent-hover)}.btn-primary:active:not(:disabled){background:var(--accent-active)}.btn-secondary{background:var(--bg-hover);color:var(--text-primary)}.btn-secondary:hover:not(:disabled){background:var(--bg-active)}.btn-ghost{background:transparent;color:var(--text-primary)}.btn-ghost:hover:not(:disabled){background:var(--bg-hover)}.btn-danger{background:var(--error);color:#fff}.btn-danger:hover:not(:disabled){background:var(--error-hover)}.btn-success{background:var(--success);color:var(--text-inverse)}.btn-success:hover:not(:disabled){background:var(--success-hover)}.btn-icon{display:inline-flex;align-items:center;justify-content:center;width:1.2em;height:1.2em;font-size:1.2em}.btn-icon svg{width:100%;height:100%;display:block}.btn-icon-only{aspect-ratio:1;padding:0}.btn-loading{position:relative;pointer-events:none}.btn-loading>span:not(.btn-spinner){opacity:.5}.btn-spinner{display:inline-block;width:1em;height:1em;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:spin var(--duration-slowest) linear infinite}.btn-group{display:inline-flex;gap:var(--space-2)}.btn-group .btn{flex:1}.btn-group-attached{display:inline-flex;gap:0}.btn-group-attached .btn{border-radius:0}.btn-group-attached .btn:first-child{border-top-left-radius:var(--radius-full);border-bottom-left-radius:var(--radius-full)}.btn-group-attached .btn:last-child{border-top-right-radius:var(--radius-full);border-bottom-right-radius:var(--radius-full)}.btn-group-attached .btn:not(:last-child){border-right:1px solid var(--border-color)}.icon{display:inline-block;vertical-align:middle;color:currentColor;flex-shrink:0;transition:color var(--transition-fast),transform var(--transition-fast)}.icon--sm{width:16px;height:16px}.icon--base{width:20px;height:20px}.icon--lg{width:24px;height:24px}.icon--xl{width:32px;height:32px}.icon--primary{color:var(--color-primary-500)}.icon--success{color:var(--color-success-500)}.icon--warning{color:var(--color-warning-500)}.icon--danger{color:var(--color-danger-500)}.icon--info{color:var(--color-info-500)}.icon--muted{color:var(--color-neutral-500)}.icon--interactive{cursor:pointer;transition:all var(--transition-fast)}.icon--interactive:hover{color:var(--color-primary-400);transform:scale(1.1)}.icon--interactive:active{transform:scale(.95)}.icon-button{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-2);background:none;border:none;border-radius:var(--radius-md);color:var(--color-text);cursor:pointer;transition:all var(--transition-fast)}.icon-button:hover{background-color:var(--color-neutral-800);color:var(--color-primary-400)}.icon-button:active{transform:scale(.95)}.icon-button:disabled{opacity:.5;cursor:not-allowed}.icon-button:disabled:hover{background:none;color:var(--color-text)}.icon-button--sm{padding:var(--spacing-1)}.icon-button--lg{padding:var(--spacing-3)}.icon-button--xl{padding:var(--spacing-4)}.icon-button--primary{color:var(--color-primary-500)}.icon-button--primary:hover{background-color:rgba(var(--color-primary-500-rgb),.1);color:var(--color-primary-400)}.icon-button--ghost{color:var(--color-neutral-400)}.icon-button--ghost:hover{color:var(--color-neutral-100)}.icon-button--danger{color:var(--color-danger-500)}.icon-button--danger:hover{background-color:rgba(var(--color-danger-500-rgb),.1);color:var(--color-danger-400)}.icon-circle{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:var(--radius-full);background-color:var(--color-neutral-800);color:var(--color-neutral-100)}.icon-circle--sm{width:32px;height:32px}.icon-circle--lg{width:48px;height:48px}.icon-circle--xl{width:64px;height:64px}.icon-circle--primary{background-color:var(--color-primary-600);color:var(--color-white)}.icon-circle--success{background-color:var(--color-success-600);color:var(--color-white)}.icon-circle--warning{background-color:var(--color-warning-500);color:var(--color-neutral-900)}.icon-circle--danger{background-color:var(--color-danger-600);color:var(--color-white)}.icon--spinning{animation:icon-spin 1s linear infinite}@keyframes icon-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.icon--pulsing{animation:icon-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes icon-pulse{0%,to{opacity:1}50%{opacity:.5}}.icon--bouncing{animation:icon-bounce 1s infinite}@keyframes icon-bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.icon-wrapper{position:relative;display:inline-block}.icon-wrapper__badge{position:absolute;top:-4px;right:-4px;min-width:16px;height:16px;padding:0 4px;background:var(--color-danger-500);color:var(--color-white);font-size:10px;font-weight:var(--font-weight-semibold);line-height:16px;text-align:center;border-radius:var(--radius-full);border:2px solid var(--color-bg)}.icon-wrapper__dot{position:absolute;top:0;right:0;width:8px;height:8px;background:var(--color-success-500);border-radius:var(--radius-full);border:2px solid var(--color-bg)}.icon--play-pause{transition:transform .2s ease-out}.icon--play-pause.is-playing{transform:scale(1.1)}.icon--volume{transition:all var(--transition-fast)}.icon--volume.is-muted{color:var(--color-danger-500)}.icon[aria-hidden=true]{pointer-events:none}.input-wrapper{display:flex;flex-direction:column;gap:var(--spacing-1-5);width:100%}.input-label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text)}.input-label__required{color:var(--color-danger-500)}.input{display:flex;align-items:center;gap:var(--spacing-2);width:100%;background-color:var(--color-neutral-800);border:1px solid var(--color-neutral-700);border-radius:var(--radius-md);transition:all var(--transition-fast);position:relative}.input:hover{border-color:var(--color-neutral-600)}.input:focus-within{border-color:var(--color-primary-500);box-shadow:0 0 0 3px rgba(var(--color-primary-500-rgb),.1)}.input--sm{padding:var(--spacing-2) var(--spacing-3);font-size:var(--font-size-sm)}.input--base{padding:var(--spacing-2-5) var(--spacing-3);font-size:var(--font-size-base)}.input--lg{padding:var(--spacing-3) var(--spacing-4);font-size:var(--font-size-lg)}.input__field{flex:1;min-width:0;background:none;border:none;outline:none;color:var(--color-text);font-family:inherit;font-size:inherit}.input__field::placeholder{color:var(--color-neutral-500)}.input__field:disabled{cursor:not-allowed;opacity:.6}.input__field:-webkit-autofill,.input__field:-webkit-autofill:hover,.input__field:-webkit-autofill:focus{-webkit-box-shadow:0 0 0 1000px var(--color-neutral-800) inset;-webkit-text-fill-color:var(--color-text);transition:background-color 5000s ease-in-out 0s}.input__prefix,.input__suffix{display:flex;align-items:center;color:var(--color-neutral-400);font-size:var(--font-size-sm);white-space:nowrap;-webkit-user-select:none;user-select:none}.input__prefix{padding-right:var(--spacing-2)}.input__suffix{padding-left:var(--spacing-2)}.input__clear{display:none;align-items:center;justify-content:center;width:20px;height:20px;padding:0;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-neutral-400);cursor:pointer;transition:all var(--transition-fast);flex-shrink:0}.input__clear:hover{background-color:var(--color-neutral-700);color:var(--color-neutral-100)}.input__clear:active{transform:scale(.9)}.input__spinner{display:flex;align-items:center;justify-content:center;color:var(--color-primary-500);flex-shrink:0}.input--error{border-color:var(--color-danger-500)}.input--error:focus-within{border-color:var(--color-danger-500);box-shadow:0 0 0 3px rgba(var(--color-danger-500-rgb),.1)}.input--success{border-color:var(--color-success-500)}.input--success:focus-within{border-color:var(--color-success-500);box-shadow:0 0 0 3px rgba(var(--color-success-500-rgb),.1)}.input--disabled{opacity:.6;cursor:not-allowed;background-color:var(--color-neutral-900)}.input--disabled:hover{border-color:var(--color-neutral-700)}.input--readonly{background-color:var(--color-neutral-900);cursor:default}.input-message{font-size:var(--font-size-xs);color:var(--color-neutral-400);line-height:1.4}.input-message--error{color:var(--color-danger-400)}.input-message--success{color:var(--color-success-400)}.input--search{border-radius:var(--radius-full)}.input--search .input__field{padding-left:var(--spacing-2)}.input__field[type=number]::-webkit-inner-spin-button,.input__field[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.input__field[type=number]{appearance:textfield;-moz-appearance:textfield}.input__toggle-password{display:flex;align-items:center;justify-content:center;padding:0;background:none;border:none;color:var(--color-neutral-400);cursor:pointer;transition:color var(--transition-fast);flex-shrink:0}.input__toggle-password:hover{color:var(--color-neutral-100)}.input--with-icon-left .input__field{padding-left:0}.input--with-icon-right .input__field{padding-right:0}.input-group{display:flex;gap:var(--spacing-2);align-items:flex-start}.input-group .input-wrapper{flex:1}.input-wrapper--floating{position:relative}.input-wrapper--floating .input-label{position:absolute;top:0;left:var(--spacing-3);padding:0 var(--spacing-1);background-color:var(--color-bg);color:var(--color-neutral-500);font-size:var(--font-size-xs);pointer-events:none;transform:translateY(-50%);transition:all var(--transition-fast);z-index:1}.input-wrapper--floating .input:focus-within~.input-label,.input-wrapper--floating .input__field:not(:placeholder-shown)~.input-label{color:var(--color-primary-500);font-size:var(--font-size-xs)}.input--borderless{border:none;background:none;padding-left:0;padding-right:0}.input--borderless:hover,.input--borderless:focus-within{border:none;box-shadow:none}.input--borderless .input__field{border-bottom:2px solid var(--color-neutral-700);border-radius:0;padding-bottom:var(--spacing-2);transition:border-color var(--transition-fast)}.input--borderless:focus-within .input__field{border-bottom-color:var(--color-primary-500)}@media(max-width:640px){.input-group{flex-direction:column}}.spinner{display:inline-flex;align-items:center;justify-content:center;color:var(--color-primary-500)}.spinner--sm{width:16px;height:16px}.spinner--base{width:24px;height:24px}.spinner--lg{width:32px;height:32px}.spinner--xl{width:48px;height:48px}.spinner--primary{color:var(--color-primary-500)}.spinner--white{color:var(--color-white)}.spinner--current{color:currentColor}.spinner__label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.spinner__circle{width:100%;height:100%;animation:spinner-rotate 2s linear infinite}.spinner__path{stroke:currentColor;stroke-linecap:round;animation:spinner-dash 1.5s ease-in-out infinite}@keyframes spinner-rotate{to{transform:rotate(360deg)}}@keyframes spinner-dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}.spinner__dots{display:flex;gap:4px;align-items:center;justify-content:center;width:100%;height:100%}.spinner__dot{width:25%;height:25%;background-color:currentColor;border-radius:var(--radius-full);animation:spinner-dots 1.4s infinite ease-in-out both}.spinner__dot:nth-child(1){animation-delay:-.32s}.spinner__dot:nth-child(2){animation-delay:-.16s}@keyframes spinner-dots{0%,80%,to{transform:scale(0);opacity:.5}40%{transform:scale(1);opacity:1}}.spinner__bars{display:flex;gap:2px;align-items:center;justify-content:center;width:100%;height:100%}.spinner__bar{width:12%;height:100%;background-color:currentColor;border-radius:2px;animation:spinner-bars 1.2s infinite ease-in-out}.spinner__bar:nth-child(1){animation-delay:-1.2s}.spinner__bar:nth-child(2){animation-delay:-1.1s}.spinner__bar:nth-child(3){animation-delay:-1s}.spinner__bar:nth-child(4){animation-delay:-.9s}.spinner__bar:nth-child(5){animation-delay:-.8s}@keyframes spinner-bars{0%,40%,to{transform:scaleY(.4)}20%{transform:scaleY(1)}}.spinner__equalizer{display:flex;gap:2px;align-items:flex-end;justify-content:center;width:100%;height:100%}.spinner__eq-bar{width:18%;min-height:20%;background-color:currentColor;border-radius:2px 2px 0 0;animation:spinner-equalizer 1s infinite ease-in-out}.spinner__eq-bar:nth-child(1){animation-delay:0s}.spinner__eq-bar:nth-child(2){animation-delay:.1s}.spinner__eq-bar:nth-child(3){animation-delay:.2s}.spinner__eq-bar:nth-child(4){animation-delay:.3s}@keyframes spinner-equalizer{0%,to{height:20%}50%{height:100%}}.spinner__pulse{width:100%;height:100%;background-color:currentColor;border-radius:var(--radius-full);animation:spinner-pulse 1.2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spinner-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}.spinner-with-text{display:inline-flex;align-items:center;gap:var(--spacing-2)}.spinner-with-text__text{color:var(--color-neutral-400);font-size:var(--font-size-sm)}.spinner-overlay{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background-color:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:var(--z-modal)}.spinner-overlay .spinner{width:48px;height:48px}.spinner-container{position:relative;min-height:100px}.spinner-container__spinner{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@media(prefers-reduced-motion:reduce){.spinner__circle{animation-duration:4s}.spinner__dots .spinner__dot,.spinner__bars .spinner__bar,.spinner__equalizer .spinner__eq-bar,.spinner__pulse{animation-duration:2.4s}}.skeleton{background-color:var(--color-neutral-800);border-radius:var(--radius-sm);position:relative;overflow:hidden}.skeleton-container{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md)}.skeleton-card{display:grid;grid-template-columns:auto 1fr auto auto;grid-template-areas:"thumb info duration actions";gap:var(--space-md);align-items:center;padding:var(--space-md);background-color:var(--bg-card);border-radius:var(--radius);border:1px solid rgba(255,255,255,.05)}.skeleton-card__thumbnail{grid-area:thumb;width:56px;height:56px;border-radius:var(--radius);background:#ffffff1a}.skeleton-card__info{grid-area:info;display:flex;flex-direction:column;gap:6px;min-width:0}.skeleton-card__title{height:18px;width:60%;border-radius:4px;background:#ffffff1a}.skeleton-card__artist{height:14px;width:40%;border-radius:4px;background:#ffffff14}.skeleton-card__duration{grid-area:duration;width:40px;height:14px;border-radius:4px;background:#ffffff1a}.skeleton-card__actions{grid-area:actions;width:36px;height:36px;border-radius:var(--radius);background:#ffffff1a}.skeleton-pulse{animation:skeleton-pulse 1.5s cubic-bezier(.4,0,.6,1) infinite}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.4}}@media(max-width:640px){.skeleton-card{grid-template-columns:auto 1fr auto auto;padding:var(--space-sm);gap:6px}.skeleton-card__thumbnail{width:48px;height:48px}}.skeleton--text{height:16px;width:100%;border-radius:var(--radius-sm)}.skeleton--circle{border-radius:var(--radius-full);width:40px;height:40px}.skeleton--rect{width:100%;height:200px;border-radius:var(--radius-md)}.skeleton--animated:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,var(--color-neutral-700) 50%,transparent 100%);animation:skeleton-shimmer 1.5s infinite}@keyframes skeleton-shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.skeleton-group{display:flex;flex-direction:column;gap:var(--spacing-2);width:100%}.skeleton-track-card{display:flex;align-items:center;gap:var(--spacing-3);padding:var(--spacing-3);background-color:var(--color-neutral-900);border-radius:var(--radius-md)}.skeleton-track-card__content{flex:1;display:flex;flex-direction:column;gap:var(--spacing-2)}.skeleton-avatar{display:flex;align-items:center;gap:var(--spacing-3)}.skeleton-avatar__content{flex:1;display:flex;flex-direction:column;gap:var(--spacing-2)}.skeleton-card{padding:var(--spacing-4);background-color:var(--color-neutral-900);border-radius:var(--radius-lg);display:flex;flex-direction:column;gap:var(--spacing-3)}.skeleton-card__header{display:flex;align-items:center;gap:var(--spacing-3)}.skeleton-card__body,.skeleton-list{display:flex;flex-direction:column;gap:var(--spacing-2)}.skeleton-list-item{display:flex;align-items:center;gap:var(--spacing-3);padding:var(--spacing-3);background-color:var(--color-neutral-900);border-radius:var(--radius-md)}.skeleton-list-item__content{flex:1;display:flex;flex-direction:column;gap:var(--spacing-2)}.skeleton-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--spacing-4)}.skeleton-grid-item{aspect-ratio:1;border-radius:var(--radius-lg)}.skeleton-table{width:100%;border-spacing:0}.skeleton-table__row{display:flex;gap:var(--spacing-3);padding:var(--spacing-3);border-bottom:1px solid var(--color-neutral-800)}.skeleton-table__cell{flex:1}.skeleton-player{display:flex;flex-direction:column;gap:var(--spacing-4);padding:var(--spacing-6);background-color:var(--color-neutral-900);border-radius:var(--radius-lg)}.skeleton-player__artwork{width:100%;aspect-ratio:1;border-radius:var(--radius-lg)}.skeleton-player__info{display:flex;flex-direction:column;gap:var(--spacing-2);align-items:center}.skeleton-player__controls{display:flex;align-items:center;justify-content:center;gap:var(--spacing-4)}.skeleton-queue-item{display:flex;align-items:center;gap:var(--spacing-3);padding:var(--spacing-3);background-color:var(--color-neutral-900);border-radius:var(--radius-md)}.skeleton-queue-item__thumbnail{width:48px;height:48px;border-radius:var(--radius-sm)}.skeleton-queue-item__content{flex:1;display:flex;flex-direction:column;gap:var(--spacing-2)}.skeleton-queue-item__actions{display:flex;gap:var(--spacing-2)}.skeleton--pulse{animation:skeleton-pulse 1.5s cubic-bezier(.4,0,.6,1) infinite}@keyframes skeleton-pulse{0%,to{opacity:1}50%{opacity:.5}}.skeleton-wave>.skeleton:nth-child(1){animation-delay:0s}.skeleton-wave>.skeleton:nth-child(2){animation-delay:.1s}.skeleton-wave>.skeleton:nth-child(3){animation-delay:.2s}.skeleton-wave>.skeleton:nth-child(4){animation-delay:.3s}.skeleton-wave>.skeleton:nth-child(5){animation-delay:.4s}@media(prefers-reduced-motion:reduce){.skeleton--animated:before{animation:none}.skeleton--pulse{animation:none;opacity:.7}}[data-theme=light] .skeleton{background-color:var(--color-neutral-200)}[data-theme=light] .skeleton--animated:before{background:linear-gradient(90deg,transparent 0%,var(--color-neutral-300) 50%,transparent 100%)}[data-theme=light] .skeleton-track-card,[data-theme=light] .skeleton-list-item,[data-theme=light] .skeleton-card{background-color:var(--color-neutral-100)}@keyframes marquee{0%,20%{transform:translate(0)}80%,to{transform:translate(calc(-100% + 100px))}}@keyframes successPulse{0%{transform:scale(1)}50%{transform:scale(1.05)}to{transform:scale(1)}}.track-card{display:grid;grid-template-columns:auto 1fr auto auto;grid-template-areas:"thumb info duration actions";gap:var(--space-md);align-items:center;padding:var(--space-md);background-color:var(--bg-card);border-radius:var(--radius);border:1px solid rgba(255,255,255,.05);transition:all .2s ease;position:relative;cursor:pointer}.track-card--adding{animation:successPulse .4s ease-out;background-color:#1ed7601a;border-color:var(--accent)}.track-card:hover{background-color:var(--bg-hover);border-color:#ffffff1a;transform:translateY(-1px);z-index:10;box-shadow:0 4px 12px #0000004d}.track-card:active{transform:translateY(0)}.track-card--playing{background:linear-gradient(135deg,#1ed76026,#1ed7600d);border-color:var(--accent)}.track-card--queued{border-color:#1ed7604d}.track-card--compact{padding:var(--space-sm);gap:var(--space-sm)}.track-card--compact .track-card__thumbnail{width:40px;height:40px}.track-card__thumbnail{width:56px;height:56px;border-radius:var(--radius);background:linear-gradient(135deg,#1ed760,#1db954);background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;overflow:hidden;position:relative;flex-shrink:0;transition:transform .2s ease}.track-card:hover .track-card__thumbnail{transform:scale(1.05)}.track-card__thumbnail:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,transparent 0%,rgba(0,0,0,.2) 100%)}.track-card__playing-overlay{position:absolute;inset:0;background:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;border-radius:var(--radius)}.track-card__info{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.track-card__title{font-size:15px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;line-height:1.4;position:relative}.track-card__title>span{display:inline-block;padding-right:2em;animation-play-state:paused}.track-card:hover .track-card__title>span,.track-card--playing .track-card__title>span{animation:marquee 10s linear infinite}.track-card--playing .track-card__title{color:var(--accent)}.track-card__artist{font-size:13px;color:var(--text-muted);white-space:nowrap;overflow:hidden;line-height:1.3;position:relative}.track-card__artist>span{display:inline-block;padding-right:2em;animation-play-state:paused}.track-card:hover .track-card__artist>span,.track-card--playing .track-card__artist>span{animation:marquee 10s linear infinite}.track-card__album{font-size:12px;color:var(--text-muted);opacity:.7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.3;margin-top:2px}.track-card__duration{font-size:13px;color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:500;white-space:nowrap;flex-shrink:0;align-self:center;padding:0 var(--space-md);display:block}.track-card__actions{display:flex;align-items:center;gap:var(--space-sm);flex-shrink:0;align-self:center}.track-card__vote{display:flex;align-items:center;gap:4px}.track-card__vote-count{font-size:13px;font-weight:600;color:var(--text-muted)}.track-card__queued-badge{display:inline-flex;align-items:center;gap:4px;padding:4px 8px;background-color:#1ed76026;color:var(--accent);border-radius:var(--radius-full);font-size:11px;font-weight:600;white-space:nowrap}@media(max-width:640px){.track-card{grid-template-columns:auto 1fr auto auto;grid-template-areas:"thumb info duration actions";padding:var(--space-sm);gap:6px}.track-card__thumbnail{width:48px;height:48px;grid-area:thumb}.track-card__info{grid-area:info}.track-card__title{font-size:14px}.track-card__artist{font-size:12px}.track-card__duration{grid-area:duration;font-size:12px;padding:0 4px}.track-card__actions{grid-area:actions}.track-card__actions button{width:36px;height:36px;padding:0}}.toast-container{position:fixed;bottom:var(--spacing-4);right:var(--spacing-4);z-index:var(--z-toast);display:flex;flex-direction:column;gap:var(--spacing-3);pointer-events:none;max-width:400px}.toast{display:flex;align-items:flex-start;gap:var(--spacing-3);padding:var(--spacing-4);background-color:var(--color-neutral-900);border-radius:var(--radius-lg);border:1px solid var(--color-neutral-700);box-shadow:var(--shadow-xl);pointer-events:auto;min-width:300px;max-width:400px;opacity:0;transform:translate(calc(100% + var(--spacing-4)));transition:all var(--transition-normal)}.toast--visible{opacity:1;transform:translate(0)}.toast--hiding{opacity:0;transform:translate(calc(100% + var(--spacing-4)))}.toast--success{border-color:var(--color-success-600);background:linear-gradient(135deg,rgba(var(--color-success-600-rgb),.1) 0%,var(--color-neutral-900) 100%)}.toast--success .toast__icon{color:var(--color-success-500)}.toast--error{border-color:var(--color-danger-600);background:linear-gradient(135deg,rgba(var(--color-danger-600-rgb),.1) 0%,var(--color-neutral-900) 100%)}.toast--error .toast__icon{color:var(--color-danger-500)}.toast--warning{border-color:var(--color-warning-500);background:linear-gradient(135deg,rgba(var(--color-warning-500-rgb),.1) 0%,var(--color-neutral-900) 100%)}.toast--warning .toast__icon{color:var(--color-warning-500)}.toast--info{border-color:var(--color-info-600);background:linear-gradient(135deg,rgba(var(--color-info-600-rgb),.1) 0%,var(--color-neutral-900) 100%)}.toast--info .toast__icon{color:var(--color-info-500)}.toast__icon{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center}.toast__content{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--spacing-1)}.toast__title{font-size:var(--font-size-base);font-weight:var(--font-weight-semibold);color:var(--color-text);line-height:1.4}.toast__message{font-size:var(--font-size-sm);color:var(--color-neutral-300);line-height:1.5}.toast__action{margin-top:var(--spacing-2);padding:var(--spacing-1-5) var(--spacing-3);background:none;border:1px solid currentColor;border-radius:var(--radius-md);color:var(--color-primary-400);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);cursor:pointer;transition:all var(--transition-fast);align-self:flex-start}.toast__action:hover{background-color:rgba(var(--color-primary-500-rgb),.1);border-color:var(--color-primary-400)}.toast__action:active{transform:scale(.98)}.toast__close{flex-shrink:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;background:none;border:none;border-radius:var(--radius-sm);color:var(--color-neutral-500);cursor:pointer;transition:all var(--transition-fast);padding:0}.toast__close:hover{background-color:var(--color-neutral-800);color:var(--color-neutral-100)}.toast__close:active{transform:scale(.9)}.toast-container--top-left{top:var(--spacing-4);left:var(--spacing-4);right:auto;bottom:auto}.toast-container--top-left .toast{transform:translate(calc(-100% - var(--spacing-4)))}.toast-container--top-left .toast--visible{transform:translate(0)}.toast-container--top-center{top:var(--spacing-4);left:50%;right:auto;bottom:auto;transform:translate(-50%)}.toast-container--top-center .toast{transform:translateY(calc(-100% - var(--spacing-4)))}.toast-container--top-center .toast--visible{transform:translateY(0)}.toast-container--top-right{top:var(--spacing-4);right:var(--spacing-4);left:auto;bottom:auto}.toast-container--top-right .toast{transform:translate(calc(100% + var(--spacing-4)))}.toast-container--top-right .toast--visible{transform:translate(0)}.toast-container--bottom-left{bottom:var(--spacing-4);left:var(--spacing-4);right:auto;top:auto}.toast-container--bottom-left .toast{transform:translate(calc(-100% - var(--spacing-4)))}.toast-container--bottom-left .toast--visible{transform:translate(0)}.toast-container--bottom-center{bottom:var(--spacing-4);left:50%;right:auto;top:auto;transform:translate(-50%)}.toast-container--bottom-center .toast{transform:translateY(calc(100% + var(--spacing-4)))}.toast-container--bottom-center .toast--visible{transform:translateY(0)}.toast--with-progress:after{content:"";position:absolute;bottom:0;left:0;right:0;height:3px;background-color:currentColor;border-radius:0 0 var(--radius-lg) var(--radius-lg);transform-origin:left;animation:toast-progress var(--toast-duration, 5s) linear forwards}@keyframes toast-progress{0%{transform:scaleX(1)}to{transform:scaleX(0)}}@media(max-width:640px){.toast-container{left:var(--spacing-3);right:var(--spacing-3);bottom:calc(var(--spacing-3) + var(--safe-bottom, 0px))}.toast{min-width:0;max-width:none;width:100%}.toast-container--top-left,.toast-container--top-right,.toast-container--top-center{left:var(--spacing-3);right:var(--spacing-3);top:var(--spacing-3);transform:none}.toast-container--bottom-left,.toast-container--bottom-right,.toast-container--bottom-center{left:var(--spacing-3);right:var(--spacing-3);bottom:calc(var(--spacing-3) + var(--safe-bottom, 0px));transform:none}.toast{transform:translateY(calc(100% + var(--spacing-3)))}.toast--visible{transform:translateY(0)}.toast--hiding{transform:translateY(calc(100% + var(--spacing-3)))}}.toast-container .toast:not(:last-child){margin-bottom:0}.toast--compact{padding:var(--spacing-3);min-width:250px}.toast--compact .toast__title{font-size:var(--font-size-sm)}.toast--compact .toast__message{font-size:var(--font-size-xs)}.toast--loading .toast__icon{animation:icon-spin 1s linear infinite}.toast:focus{outline:2px solid var(--color-primary-500);outline-offset:2px}@media(prefers-reduced-motion:reduce){.toast{transition:opacity var(--transition-fast);transform:none!important}.toast--visible,.toast--hiding{transform:none!important}@keyframes toast-progress{0%{opacity:1}to{opacity:0}}}[data-theme=light] .toast{background-color:var(--color-white);border-color:var(--color-neutral-300);box-shadow:var(--shadow-2xl)}[data-theme=light] .toast__message,[data-theme=light] .toast__close{color:var(--color-neutral-600)}[data-theme=light] .toast__close:hover{background-color:var(--color-neutral-100);color:var(--color-neutral-900)}.modal-backdrop{position:fixed;inset:0;background-color:#000000b3;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:var(--z-modal);display:flex;align-items:center;justify-content:center;padding:var(--spacing-4);opacity:0;transition:opacity var(--transition-normal)}.modal-backdrop--visible{opacity:1}.modal{background-color:var(--bg-card);border-radius:var(--radius-xl);border:1px solid var(--border-color-strong);box-shadow:var(--shadow-2xl);max-height:90vh;display:flex;flex-direction:column;position:relative;opacity:0;transition:all var(--transition-normal)}.modal--visible{opacity:1}.modal--sm{width:100%;max-width:400px}.modal--base{width:100%;max-width:600px}.modal--lg{width:100%;max-width:800px}.modal--full{width:calc(100vw - var(--spacing-8));height:calc(100vh - var(--spacing-8));max-width:none;max-height:calc(100vh - var(--spacing-8))}.modal--fade{transform:none}.modal--scale{transform:scale(.9)}.modal--scale.modal--visible{transform:scale(1)}.modal--slide-up{transform:translateY(20px)}.modal--slide-up.modal--visible{transform:translateY(0)}.modal--slide-down{transform:translateY(-20px)}.modal--slide-down.modal--visible{transform:translateY(0)}.modal__header{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-4);padding:var(--spacing-6) var(--spacing-6) var(--spacing-5);border-bottom:1px solid var(--border-color);flex-shrink:0}.modal__title{font-size:var(--font-size-xl);font-weight:var(--font-weight-bold);color:var(--text-primary);margin:0;line-height:1.3}.modal__close{display:flex;align-items:center;justify-content:center;width:32px;height:32px;padding:0;background:none;border:none;border-radius:var(--radius-md);color:var(--text-secondary);cursor:pointer;transition:all var(--transition-fast);flex-shrink:0}.modal__close:hover{background-color:var(--bg-hover);color:var(--text-primary)}.modal__close:active{transform:scale(.95)}.modal__body{flex:1;overflow-y:auto;padding:var(--spacing-6) var(--spacing-6) var(--spacing-5);color:var(--text-secondary);line-height:1.6}.modal__body::-webkit-scrollbar{width:8px}.modal__body::-webkit-scrollbar-track{background:transparent}.modal__body::-webkit-scrollbar-thumb{background:var(--bg-hover);border-radius:var(--radius-sm)}.modal__body::-webkit-scrollbar-thumb:hover{background:var(--bg-active)}.modal__footer{display:flex;align-items:center;justify-content:flex-end;gap:var(--spacing-3);padding:var(--spacing-5) var(--spacing-6) var(--spacing-6);border-top:1px solid var(--border-color);flex-shrink:0}.modal--no-padding .modal__body{padding:0}.modal--centered-content .modal__body{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.modal--confirm .modal__body{padding:var(--spacing-8) var(--spacing-6);text-align:center}.modal--confirm .modal__footer{justify-content:center}.modal--alert{border-color:var(--color-danger-600)}.modal--alert .modal__header{background:linear-gradient(135deg,rgba(var(--color-danger-600-rgb),.1) 0%,transparent 100%);border-bottom-color:var(--color-danger-700)}.modal--success{border-color:var(--color-success-600)}.modal--success .modal__header{background:linear-gradient(135deg,rgba(var(--color-success-600-rgb),.1) 0%,transparent 100%);border-bottom-color:var(--color-success-700)}@media(max-width:640px){.modal-backdrop{padding:var(--spacing-2);align-items:flex-end}.modal{max-height:85vh;border-radius:var(--radius-xl) var(--radius-xl) 0 0}.modal--sm,.modal--base,.modal--lg{width:100%;max-width:none}.modal--full{width:100%;height:calc(100vh - var(--spacing-4));max-height:calc(100vh - var(--spacing-4));border-radius:var(--radius-lg)}.modal__header,.modal__body,.modal__footer{padding:var(--spacing-4)}.modal__title{font-size:var(--font-size-lg)}.modal--slide-up{transform:translateY(100%)}.modal--slide-up.modal--visible{transform:translateY(0)}}.modal--loading{pointer-events:none}.modal--loading .modal__body{display:flex;align-items:center;justify-content:center;min-height:200px}.modal-backdrop+.modal-backdrop{z-index:calc(var(--z-modal) + 10)}.modal:focus{outline:none}.modal__close:focus-visible{outline:2px solid var(--color-primary-500);outline-offset:2px}@media(prefers-reduced-motion:reduce){.modal-backdrop,.modal{transition:opacity var(--transition-fast)}.modal--scale,.modal--slide-up,.modal--slide-down{transform:none!important}}@supports (padding: env(safe-area-inset-bottom)){@media(max-width:640px){.modal__footer{padding-bottom:calc(var(--spacing-4) + env(safe-area-inset-bottom))}}}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--spacing-8);min-height:300px}.empty-state__icon{display:flex;align-items:center;justify-content:center;width:80px;height:80px;margin-bottom:var(--spacing-4);border-radius:var(--radius-full);background:var(--color-bg-tertiary);color:var(--color-text-tertiary);transition:var(--transition-base)}.empty-state:hover .empty-state__icon{background:var(--color-bg-secondary);color:var(--color-text-secondary)}.empty-state__content{max-width:400px}.empty-state__title{margin:0 0 var(--spacing-2) 0;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);color:var(--color-text-primary);line-height:var(--line-height-tight)}.empty-state__description{margin:0 0 var(--spacing-4) 0;font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.empty-state__action{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-3) var(--spacing-5);border:none;border-radius:var(--radius-lg);background:var(--color-primary);color:#fff;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:var(--transition-base);box-shadow:var(--shadow-sm)}.empty-state__action:hover{background:var(--color-primary-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.empty-state__action:active{transform:translateY(0);box-shadow:var(--shadow-sm)}.empty-state__action:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.empty-state--sm{min-height:200px;padding:var(--spacing-6)}.empty-state--sm .empty-state__icon{width:60px;height:60px;margin-bottom:var(--spacing-3)}.empty-state--sm .empty-state__content{max-width:320px}.empty-state--sm .empty-state__title{font-size:var(--font-size-lg);margin-bottom:var(--spacing-1)}.empty-state--sm .empty-state__description{font-size:var(--font-size-sm);margin-bottom:var(--spacing-3)}.empty-state--sm .empty-state__action{padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-sm)}.empty-state--lg{min-height:400px;padding:var(--spacing-10)}.empty-state--lg .empty-state__icon{width:120px;height:120px;margin-bottom:var(--spacing-6)}.empty-state--lg .empty-state__content{max-width:500px}.empty-state--lg .empty-state__title{font-size:var(--font-size-2xl);margin-bottom:var(--spacing-3)}.empty-state--lg .empty-state__description{font-size:var(--font-size-lg);margin-bottom:var(--spacing-5)}.empty-state--lg .empty-state__action{padding:var(--spacing-4) var(--spacing-6);font-size:var(--font-size-lg)}@keyframes emptyStateFloat{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.empty-state__icon{animation:emptyStateFloat 3s ease-in-out infinite}.empty-state:hover .empty-state__icon{animation-play-state:paused}@media(max-width:640px){.empty-state{min-height:250px;padding:var(--spacing-6)}.empty-state__icon{width:64px;height:64px;margin-bottom:var(--spacing-3)}.empty-state__content{max-width:100%}.empty-state__title{font-size:var(--font-size-lg)}.empty-state__description{font-size:var(--font-size-sm)}.empty-state__action{width:100%;max-width:280px}.empty-state--lg{min-height:300px;padding:var(--spacing-8)}.empty-state--lg .empty-state__icon{width:80px;height:80px}.empty-state--lg .empty-state__title{font-size:var(--font-size-xl)}.empty-state--lg .empty-state__description{font-size:var(--font-size-base)}}@media(prefers-color-scheme:dark){.empty-state__icon{background:#ffffff0d}.empty-state:hover .empty-state__icon{background:#ffffff14}.empty-state__action{box-shadow:var(--shadow-md)}.empty-state__action:hover{box-shadow:var(--shadow-lg)}}@media print{.empty-state{min-height:auto;padding:var(--spacing-4)}.empty-state__icon{animation:none;display:none}.empty-state__action{display:none}}.error-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--spacing-8);min-height:300px}.error-state__icon{display:flex;align-items:center;justify-content:center;width:80px;height:80px;margin-bottom:var(--spacing-4);border-radius:var(--radius-full);transition:var(--transition-base)}.error-state--error .error-state__icon{background:var(--color-danger-muted);color:var(--color-danger)}.error-state--warning .error-state__icon{background:var(--color-warning-muted);color:var(--color-warning)}.error-state--offline .error-state__icon{background:var(--color-bg-tertiary);color:var(--color-text-tertiary)}.error-state__content{max-width:400px}.error-state__title{margin:0 0 var(--spacing-2) 0;font-size:var(--font-size-xl);font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight)}.error-state--error .error-state__title{color:var(--color-danger)}.error-state--warning .error-state__title{color:var(--color-warning)}.error-state--offline .error-state__title{color:var(--color-text-primary)}.error-state__message{margin:0 0 var(--spacing-4) 0;font-size:var(--font-size-base);color:var(--color-text-secondary);line-height:var(--line-height-relaxed)}.error-state__actions{display:flex;gap:var(--spacing-3);justify-content:center;margin-top:var(--spacing-5)}.error-state__action{display:inline-flex;align-items:center;justify-content:center;padding:var(--spacing-3) var(--spacing-5);border:none;border-radius:var(--radius-lg);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);cursor:pointer;transition:var(--transition-base)}.error-state__action--primary{background:var(--color-primary);color:#fff;box-shadow:var(--shadow-sm)}.error-state__action--primary:hover{background:var(--color-primary-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.error-state__action--primary:active{transform:translateY(0);box-shadow:var(--shadow-sm)}.error-state__action--primary:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.error-state__action--secondary{background:var(--color-bg-secondary);color:var(--color-text-primary);border:1px solid var(--color-border)}.error-state__action--secondary:hover{background:var(--color-bg-tertiary);border-color:var(--color-border-hover)}.error-state__action--secondary:active{background:var(--color-bg-secondary)}.error-state__action--secondary:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.error-state--sm{min-height:200px;padding:var(--spacing-6)}.error-state--sm .error-state__icon{width:60px;height:60px;margin-bottom:var(--spacing-3)}.error-state--sm .error-state__content{max-width:320px}.error-state--sm .error-state__title{font-size:var(--font-size-lg);margin-bottom:var(--spacing-1)}.error-state--sm .error-state__message{font-size:var(--font-size-sm);margin-bottom:var(--spacing-3)}.error-state--sm .error-state__action{padding:var(--spacing-2) var(--spacing-4);font-size:var(--font-size-sm)}.error-state--lg{min-height:400px;padding:var(--spacing-10)}.error-state--lg .error-state__icon{width:120px;height:120px;margin-bottom:var(--spacing-6)}.error-state--lg .error-state__content{max-width:500px}.error-state--lg .error-state__title{font-size:var(--font-size-2xl);margin-bottom:var(--spacing-3)}.error-state--lg .error-state__message{font-size:var(--font-size-lg);margin-bottom:var(--spacing-5)}.error-state--lg .error-state__action{padding:var(--spacing-4) var(--spacing-6);font-size:var(--font-size-lg)}@keyframes errorShake{0%,to{transform:translate(0)}25%{transform:translate(-10px)}75%{transform:translate(10px)}}@keyframes errorPulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}.error-state--error .error-state__icon{animation:errorShake .5s ease-in-out}.error-state--warning .error-state__icon{animation:errorPulse 2s ease-in-out infinite}@media(max-width:640px){.error-state{min-height:250px;padding:var(--spacing-6)}.error-state__icon{width:64px;height:64px;margin-bottom:var(--spacing-3)}.error-state__content{max-width:100%}.error-state__title{font-size:var(--font-size-lg)}.error-state__message{font-size:var(--font-size-sm)}.error-state__actions{flex-direction:column;width:100%;gap:var(--spacing-2)}.error-state__action{width:100%;max-width:280px}.error-state--lg{min-height:300px;padding:var(--spacing-8)}.error-state--lg .error-state__icon{width:80px;height:80px}.error-state--lg .error-state__title{font-size:var(--font-size-xl)}.error-state--lg .error-state__message{font-size:var(--font-size-base)}}@media(prefers-color-scheme:dark){.error-state--error .error-state__icon{background:#ef44441a}.error-state--warning .error-state__icon{background:#f59e0b1a}.error-state--offline .error-state__icon{background:#ffffff0d}.error-state__action--primary{box-shadow:var(--shadow-md)}.error-state__action--primary:hover{box-shadow:var(--shadow-lg)}.error-state__action--secondary{background:#ffffff0d}.error-state__action--secondary:hover{background:#ffffff14}}@media(prefers-reduced-motion:reduce){.error-state__icon{animation:none}.error-state__action{transition:none}}@media print{.error-state{min-height:auto;padding:var(--spacing-4)}.error-state__icon{animation:none;width:48px;height:48px}.error-state__actions{display:none}}.progress-bar{display:flex;align-items:center;gap:var(--spacing-3);width:100%;-webkit-user-select:none;user-select:none}.progress-bar__time{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);font-variant-numeric:tabular-nums;min-width:40px;text-align:center}.progress-bar__time--current{text-align:right}.progress-bar__time--duration{text-align:left}.progress-bar__container{flex:1;position:relative}.progress-bar__track{position:relative;width:100%;height:4px;background:var(--color-bg-tertiary);border-radius:var(--radius-full);overflow:visible;cursor:pointer;transition:height var(--transition-fast)}.progress-bar--seekable .progress-bar__track:hover{height:6px}.progress-bar__fill{position:absolute;top:0;left:0;height:100%;background:var(--color-primary);border-radius:var(--radius-full);transition:width .1s linear;pointer-events:none}.progress-bar__track:hover .progress-bar__fill{background:var(--color-primary-hover)}.progress-bar__handle{position:absolute;top:50%;right:-6px;width:12px;height:12px;background:#fff;border-radius:var(--radius-full);transform:translateY(-50%) scale(0);transition:transform var(--transition-fast);box-shadow:var(--shadow-md)}.progress-bar--seekable .progress-bar__track:hover .progress-bar__handle{transform:translateY(-50%) scale(1)}.progress-bar__tooltip{position:absolute;bottom:100%;left:0;transform:translate(-50%) translateY(-8px);padding:var(--spacing-1) var(--spacing-2);background:var(--color-bg-elevated);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-primary);white-space:nowrap;pointer-events:none;opacity:0;transition:opacity var(--transition-fast);box-shadow:var(--shadow-lg);font-variant-numeric:tabular-nums}.progress-bar__tooltip--visible{opacity:1}.progress-bar__tooltip:after{content:"";position:absolute;top:100%;left:50%;transform:translate(-50%);width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid var(--color-bg-elevated)}.progress-bar--sm .progress-bar__track{height:3px}.progress-bar--sm.progress-bar--seekable .progress-bar__track:hover{height:4px}.progress-bar--sm .progress-bar__handle{width:10px;height:10px;right:-5px}.progress-bar--sm .progress-bar__time{font-size:var(--font-size-2xs);min-width:35px}.progress-bar--lg .progress-bar__track{height:6px}.progress-bar--lg.progress-bar--seekable .progress-bar__track:hover{height:8px}.progress-bar--lg .progress-bar__handle{width:16px;height:16px;right:-8px}.progress-bar--lg .progress-bar__time{font-size:var(--font-size-sm);min-width:48px}.progress-bar--disabled{opacity:.5;pointer-events:none}.progress-bar--loading .progress-bar__fill{background:linear-gradient(90deg,var(--color-primary) 0%,var(--color-primary-hover) 50%,var(--color-primary) 100%);background-size:200% 100%;animation:progressLoading 1.5s ease-in-out infinite}@keyframes progressLoading{0%{background-position:200% 0}to{background-position:-200% 0}}@media(pointer:coarse){.progress-bar__track{height:6px;padding:var(--spacing-2) 0;margin:calc(var(--spacing-2) * -1) 0}.progress-bar__handle{transform:translateY(-50%) scale(1)}.progress-bar__tooltip{display:none}}@media(max-width:640px){.progress-bar__time{font-size:var(--font-size-2xs);min-width:32px}.progress-bar--lg .progress-bar__time{font-size:var(--font-size-xs);min-width:40px}}@media(prefers-color-scheme:dark){.progress-bar__track{background:#ffffff1a}.progress-bar__tooltip{background:#282828fa;border-color:#ffffff1a}.progress-bar__tooltip:after{border-top-color:#282828fa}}.progress-bar__track:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media(prefers-reduced-motion:reduce){.progress-bar__track,.progress-bar__fill,.progress-bar__handle,.progress-bar__tooltip{transition:none}.progress-bar--loading .progress-bar__fill{animation:none;background:var(--color-primary)}}@media print{.progress-bar__handle,.progress-bar__tooltip{display:none}.progress-bar__track{height:2px}}.player-controls{display:flex;align-items:center;justify-content:center;gap:var(--space-2)}.player-controls--compact{gap:var(--space-3)}.player-controls--full{gap:var(--space-4)}.player-controls__previous,.player-controls__next,.player-controls__shuffle,.player-controls__repeat{display:flex;align-items:center;justify-content:center}.player-controls__play{display:flex;align-items:center;justify-content:center;position:relative}.player-controls__play button{box-shadow:var(--shadow-md)}.player-controls__play button:hover{box-shadow:var(--shadow-lg);transform:scale(1.05)}.player-controls__play button:active{transform:scale(.98)}.player-controls button{min-width:44px;min-height:44px}.player-controls--lg button{min-width:56px;min-height:56px;font-size:24px}.player-controls--lg .btn-icon svg{width:24px;height:24px}.player-controls .btn-icon svg{width:20px;height:20px}.player-controls--sm{gap:var(--space-2)}.player-controls--sm.player-controls--full,.player-controls--base{gap:var(--space-3)}.player-controls--base.player-controls--full{gap:var(--space-4)}.player-controls--lg{gap:var(--space-5)}.player-controls--lg.player-controls--full{gap:var(--space-6)}.player-controls__shuffle button,.player-controls__repeat button{opacity:.7;transition:opacity var(--duration-base),transform var(--duration-base)}.player-controls__shuffle button:hover,.player-controls__repeat button:hover{opacity:1;transform:scale(1.1)}.player-controls__shuffle button[aria-pressed=true],.player-controls__repeat button[aria-pressed=true]{opacity:1}.player-controls--loading .player-controls__play button{position:relative;overflow:hidden}.player-controls--loading .player-controls__play button:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.2) 50%,transparent 100%);animation:loadingShine 1.5s ease-in-out infinite}@keyframes loadingShine{0%{left:-100%}to{left:100%}}.player-controls__play svg{transition:transform .2s cubic-bezier(.4,0,.2,1)}.player-controls__play button:active svg{transform:scale(.9)}@keyframes skipPulse{0%{transform:scale(1)}50%{transform:scale(1.2)}to{transform:scale(1)}}.player-controls__previous button:active svg,.player-controls__next button:active svg{animation:skipPulse .3s ease-out}@keyframes toggleBounce{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}.player-controls__shuffle button:active,.player-controls__repeat button:active{animation:toggleBounce .3s ease-out}@media(max-width:640px){.player-controls--full{gap:var(--space-3)}.player-controls--lg.player-controls--full{gap:var(--space-4)}@media(max-width:360px){.player-controls--compact .player-controls__shuffle,.player-controls--compact .player-controls__repeat{display:none}}}@media(pointer:coarse){.player-controls button{min-width:44px;min-height:44px}.player-controls--full{gap:var(--space-4)}}@media(prefers-color-scheme:dark){.player-controls__play button{box-shadow:0 4px 12px #0000004d}.player-controls__play button:hover{box-shadow:0 6px 16px #0006}}.player-controls button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media(prefers-reduced-motion:reduce){.player-controls button,.player-controls svg{transition:none;animation:none}.player-controls__play button:hover,.player-controls__play button:active{transform:none}.player-controls--loading .player-controls__play button:after{animation:none}}@media(prefers-contrast:high){.player-controls button{border:2px solid currentColor}.player-controls__shuffle button,.player-controls__repeat button{opacity:1}}@media print{.player-controls{display:none}}.waveform{position:relative;width:100%;min-height:60px;overflow:hidden;border-radius:var(--radius-lg);background:var(--color-bg-secondary)}.waveform__canvas{display:block;width:100%;height:100%;cursor:default}.waveform--seekable .waveform__canvas{cursor:pointer}.waveform--line{background:linear-gradient(to bottom,transparent 0%,var(--color-bg-tertiary) 50%,transparent 100%)}.waveform--mirror{background:linear-gradient(to bottom,var(--color-bg-tertiary) 0%,var(--color-bg-secondary) 50%,var(--color-bg-tertiary) 100%)}.waveform--gradient{background:linear-gradient(90deg,rgba(var(--color-primary-rgb),.1),rgba(var(--color-accent-rgb),.1))}.waveform--dynamic{background:linear-gradient(to bottom,#00ff000d,#ffff000d,#ff00000d)}.waveform--seekable:hover{background:var(--color-bg-tertiary)}.waveform--seekable:active{background:var(--color-bg-elevated)}.waveform__progress{position:absolute;top:0;left:0;width:2px;height:100%;background:var(--color-primary);pointer-events:none;transition:left .1s linear;box-shadow:0 0 8px var(--color-primary)}.waveform--loading{position:relative;overflow:hidden}.waveform--loading:after{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent 0%,rgba(255,255,255,.1) 50%,transparent 100%);animation:waveformLoading 1.5s ease-in-out infinite}@keyframes waveformLoading{0%{left:-100%}to{left:100%}}@media(max-width:640px){.waveform{min-height:50px}}@media(pointer:coarse){.waveform{min-height:70px}.waveform--seekable{padding:var(--spacing-2) 0}}@media(prefers-color-scheme:dark){.waveform{background:#ffffff08}.waveform--line{background:linear-gradient(to bottom,transparent 0%,rgba(255,255,255,.05) 50%,transparent 100%)}.waveform--seekable:hover{background:#ffffff0d}.waveform--seekable:active{background:#ffffff14}}.waveform--seekable:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media(prefers-reduced-motion:reduce){.waveform__progress{transition:none}.waveform--loading:after{animation:none}}.waveform__canvas{will-change:transform;transform:translateZ(0)}@media print{.waveform{display:none}}.mini-player{position:fixed;bottom:var(--nav-h, 56px);left:0;right:0;z-index:40;background:var(--bg-card);border-top:1px solid rgba(255,255,255,.1);box-shadow:var(--shadow-lg);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px)}.mini-player__progress{width:100%;padding:var(--space-2) var(--space-4) 0}.mini-player__progress .progress-bar{gap:var(--space-2);align-items:center}.mini-player__progress .progress-bar__time{font-size:var(--font-size-2xs);font-weight:var(--font-weight-medium);color:var(--text-muted);min-width:48px;font-variant-numeric:tabular-nums}.mini-player__progress .progress-bar__track{border-radius:var(--radius-full);background:#ffffff24;height:4px}.mini-player__progress .progress-bar__fill{background:var(--accent);height:100%;box-shadow:0 0 8px #1ed76059}.mini-player__progress .progress-bar__handle{opacity:0;width:12px;height:12px;background:#fff;border-radius:50%;right:-6px;transform:translateY(-50%) scale(.6);transition:opacity var(--duration-fast),transform var(--duration-fast);box-shadow:0 2px 6px #00000040}.mini-player__progress .progress-bar__track:hover .progress-bar__handle{opacity:1;transform:translateY(-50%) scale(1)}.mini-player__content{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);min-height:72px}.mini-player__track-info{display:flex;align-items:center;gap:var(--space-3);flex:1;min-width:0;transition:opacity var(--duration-fast)}.mini-player__track-info:active{opacity:.7}.mini-player__artwork{position:relative;width:48px;height:48px;flex-shrink:0;border-radius:var(--radius-md);background:linear-gradient(135deg,var(--color-primary),var(--color-accent));background-size:cover;background-position:center;overflow:hidden;box-shadow:var(--shadow-md)}.mini-player__artwork:empty:before{content:"♫";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:24px;color:#fff;font-weight:900}.mini-player__playing-indicator{position:absolute;bottom:4px;right:4px;display:flex;align-items:flex-end;gap:2px;height:12px;padding:2px 3px;background:#0009;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-radius:2px}.mini-player__playing-indicator span{width:2px;background:var(--accent);border-radius:1px;animation:equalizerBar .8s ease-in-out infinite}.mini-player__playing-indicator span:nth-child(1){height:4px;animation-delay:0s}.mini-player__playing-indicator span:nth-child(2){height:8px;animation-delay:.2s}.mini-player__playing-indicator span:nth-child(3){height:6px;animation-delay:.4s}@keyframes equalizerBar{0%,to{transform:scaleY(1)}50%{transform:scaleY(.3)}}.mini-player__meta{flex:1;min-width:0}.mini-player__title{font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.mini-player__artist{font-size:var(--font-size-xs);color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mini-player__controls{display:flex;align-items:center;gap:var(--space-3);flex-shrink:0}.mini-player__controls button{width:40px;height:40px}.mini-player__control-button{background:#ffffff14;border-radius:var(--radius-full);color:var(--text);padding:0;gap:0}.mini-player__control-button .btn-icon svg{width:24px;height:24px}.mini-player__control-button:hover{background:#ffffff2e}.mini-player__control-button .btn-icon{width:22px;height:22px;font-size:22px}.mini-player__controls .mini-player__play-button{width:56px;height:56px;box-shadow:var(--glow-primary)}.mini-player__play-button .btn-icon svg{width:24px;height:24px}.mini-player--loading{opacity:.7}.mini-player--loading .mini-player__artwork{animation:pulse 1.5s ease-in-out infinite}.playback-target-selector{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-full);color:var(--text);font-size:var(--font-size-xs);font-weight:600;cursor:pointer;transition:all .2s ease;white-space:nowrap}.playback-target-selector:hover{background:#ffffff1a;border-color:#fff3;transform:translateY(-1px)}.playback-target-selector:active{transform:translateY(0)}.playback-target-icon{font-size:18px;line-height:1}.playback-target-label{font-variant-numeric:tabular-nums}.playback-target-selector.is-web{background:rgba(var(--accent-rgb),.15);border-color:var(--accent);color:var(--accent)}.playback-target-selector.is-web:hover{background:rgba(var(--accent-rgb),.25)}@media(max-width:640px){.playback-target-label{display:none}.playback-target-selector{padding:var(--space-2);min-width:40px;justify-content:center}}@media(max-width:640px){.mini-player__content{padding:var(--space-2) var(--space-3);min-height:64px}.mini-player__artwork{width:44px;height:44px}.mini-player__title{font-size:var(--font-size-xs)}.mini-player__artist{font-size:var(--font-size-2xs)}.mini-player__controls button{width:36px;height:36px}.mini-player__controls .mini-player__play-button{width:48px;height:48px}}@media(max-width:360px){.mini-player__controls{gap:var(--space-1)}.mini-player__controls>div:last-child{display:none}}@media(min-width:768px){.mini-player{bottom:0;max-width:100vw}.mini-player__content{max-width:1200px;margin:0 auto;padding:var(--space-3) var(--space-6)}.mini-player__artwork{width:56px;height:56px}.mini-player__controls{gap:var(--space-3)}.mini-player__controls button{width:44px;height:44px}.mini-player__controls .mini-player__play-button{width:64px;height:64px}}@media(prefers-color-scheme:dark){.mini-player{background:var(--bg-card);border-top-color:#ffffff1a}.mini-player__playing-indicator{background:#000c}}@media(prefers-reduced-motion:reduce){.mini-player__playing-indicator span{animation:none}.mini-player__track-info{transition:none}.mini-player--loading .mini-player__artwork{animation:none}}@supports (padding: env(safe-area-inset-bottom)){.mini-player{padding-bottom:env(safe-area-inset-bottom)}}@media print{.mini-player{display:none}}.fullscreen-player{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;background:var(--bg);overflow:hidden}.fullscreen-player__background{position:absolute;inset:-50%;background-size:cover;background-position:center;filter:blur(60px);opacity:.3;transform:scale(1.2);transition:opacity .3s ease}.fullscreen-player__background:after{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,#000c,#0009,#000000e6)}.fullscreen-player__header{position:relative;z-index:10;display:flex;align-items:center;justify-content:space-between;padding:var(--space-4) var(--space-4);padding-top:max(var(--space-4),env(safe-area-inset-top))}.fullscreen-player__header button{color:#fff;opacity:.8;transition:opacity var(--transition-fast)}.fullscreen-player__header button:hover{opacity:1}.fullscreen-player__main{position:relative;z-index:10;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-6) var(--space-4);overflow-y:auto}.fullscreen-player__artwork-container{position:relative;width:100%;max-width:400px;aspect-ratio:1;margin-bottom:var(--space-6)}.fullscreen-player__artwork{width:100%;height:100%;border-radius:var(--radius-2xl);background:linear-gradient(135deg,var(--accent),var(--accent));background-size:cover;background-position:center;box-shadow:0 20px 60px #00000080;overflow:hidden;animation:artworkFloat 6s ease-in-out infinite}.fullscreen-player__artwork:empty:before{content:"♫";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:120px;color:#fff;font-weight:900;opacity:.5}@keyframes artworkFloat{0%,to{transform:translateY(0) scale(1)}50%{transform:translateY(-10px) scale(1.02)}}.fullscreen-player__track-info{text-align:center;margin-bottom:var(--space-6);padding:0 var(--space-4)}.fullscreen-player__title{margin:0 0 var(--space-2) 0;font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:#fff;line-height:var(--line-height-tight)}.fullscreen-player__artist{margin:0 0 var(--space-1) 0;font-size:var(--font-size-lg);font-weight:var(--font-weight-medium);color:#fffc}.fullscreen-player__album{font-size:var(--font-size-sm);color:#fff9}.fullscreen-player__waveform{width:100%;max-width:600px;margin-bottom:var(--space-4)}.fullscreen-player__controls-section{position:relative;z-index:10;width:100%;max-width:600px;margin:0 auto;padding:var(--space-4);padding-bottom:max(var(--space-4),env(safe-area-inset-bottom))}.fullscreen-player__volume{display:flex;align-items:center;gap:var(--space-md);margin-top:var(--space-4);background:#00000059;border-radius:var(--radius-lg);padding:var(--space-md);border:1px solid rgba(255,255,255,.1)}.fullscreen-player__volume-label{font-size:14px;color:#fffc;font-weight:600}.fullscreen-player__volume-value{font-size:14px;font-weight:700;color:#fff;min-width:48px;text-align:right}.fullscreen-player__volume-slider{flex:1;-webkit-appearance:none;appearance:none;height:4px;border-radius:2px;background:#fff3;outline:none;position:relative}.fullscreen-player__volume-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:#fff;cursor:pointer;box-shadow:0 2px 8px #0006}.fullscreen-player__volume-slider::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:#fff;cursor:pointer;border:none;box-shadow:0 2px 8px #0006}.fullscreen-player__progress{margin-bottom:var(--space-4)}.fullscreen-player__progress .progress-bar{height:6px}.fullscreen-player__progress .progress-bar__time{color:#fffc;font-weight:500}.fullscreen-player__progress .progress-bar__track{background:#fff3}.fullscreen-player__progress .progress-bar__fill{background:var(--accent);box-shadow:0 0 12px #1ed76080}.fullscreen-player__progress .progress-bar__thumb{background:#fff;box-shadow:0 2px 8px #0000004d;transform:scale(1);transition:transform .2s}.fullscreen-player__progress .progress-bar:hover .progress-bar__thumb{transform:scale(1.2)}.fullscreen-player__controls{margin-bottom:var(--space-2)}.fullscreen-player__controls button{color:#fff}.fullscreen-player--loading .fullscreen-player__artwork{animation:artworkFloat 6s ease-in-out infinite,pulse 1.5s ease-in-out infinite}@media(max-width:640px){.fullscreen-player__artwork-container{max-width:300px}.fullscreen-player__artwork:empty:before{font-size:80px}.fullscreen-player__title{font-size:var(--font-size-xl)}.fullscreen-player__artist{font-size:var(--font-size-base)}}@media(max-height:600px)and (orientation:landscape){.fullscreen-player__main{flex-direction:row;justify-content:space-around;padding:var(--space-4)}.fullscreen-player__artwork-container{max-width:200px;margin-bottom:0;margin-right:var(--space-6)}.fullscreen-player__track-info{margin-bottom:0;text-align:left}}@media(min-width:768px){.fullscreen-player__background{filter:blur(80px)}.fullscreen-player__artwork-container{max-width:480px}.fullscreen-player__title{font-size:var(--font-size-3xl)}.fullscreen-player__artist{font-size:var(--font-size-xl)}.fullscreen-player__album{font-size:var(--font-size-base)}.fullscreen-player__controls-section{max-width:700px}}@media(prefers-color-scheme:dark){.fullscreen-player__background{opacity:.4}.fullscreen-player__background:after{background:linear-gradient(to bottom,#000000e6,#000000b3,#000000f2)}}@media(prefers-reduced-motion:reduce){.fullscreen-player__artwork{animation:none}.fullscreen-player__background{transition:none}}@media print{.fullscreen-player{display:none}}*{box-sizing:border-box;margin:0;padding:0}:root{--header-h: 56px;--player-h: 72px;--nav-h: 56px;--safe-bottom: env(safe-area-inset-bottom, 0px)}html,body,#app{height:100%;overflow:hidden}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}*:focus{outline:none}*:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius)}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,[role=button]:focus-visible,[tabindex]:not([tabindex="-1"]):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.track-card:focus-visible,.nav-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{display:grid;grid-template-rows:var(--header-h) 1fr auto auto;grid-template-areas:"header" "content" "player" "nav";height:100vh;height:100dvh}.app-header{grid-area:header;display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-md);background:var(--bg-elevated);border-bottom:1px solid rgba(255,255,255,.05)}.app-header-actions{display:flex;align-items:center;gap:var(--space-sm)}.help-button{width:32px;height:32px;border-radius:50%;border:1px solid rgba(255,255,255,.15);background:transparent;color:var(--text);font-weight:700;cursor:pointer;transition:background .2s ease,transform .2s ease}.help-button:hover{background:#ffffff14;transform:translateY(-1px)}.logo{font-size:24px;font-weight:900;letter-spacing:-.5px;background:linear-gradient(135deg,#1ed760,#1db954);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.user-badge-mini{display:flex;align-items:center}.user-badge-mini .avatar{width:32px;height:32px;border-radius:50%;background:var(--accent);color:var(--bg);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:14px}.app-content{grid-area:content;overflow-y:auto;overflow-x:hidden;background:linear-gradient(180deg,#181818,#000);position:relative}.view-container{animation:fadeIn .3s ease-in-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.view-container.fade-out{animation:fadeOut .2s ease-in-out forwards}@keyframes fadeOut{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.player-bar{grid-area:player;background:var(--bg-elevated);border-top:1px solid rgba(255,255,255,.05);min-height:0;transition:min-height .3s;width:100%;max-width:100vw;overflow:hidden}.player-bar:has(.now-playing-bar:not(:empty)){min-height:var(--player-h)}.now-playing-bar{padding:var(--space-sm) var(--space-md);display:flex;align-items:center;width:100%;max-width:100vw;overflow:visible;position:relative}.now-playing-bar:empty{display:none;height:0;padding:0}.now-playing-bar:not(:empty){height:var(--player-h)}.now-playing-bar .np{display:grid;grid-template-columns:1fr auto;gap:var(--space-md);align-items:center;width:100%;overflow:hidden;position:relative}.now-playing-bar .empty{display:none}.volume-slider{position:absolute;bottom:100%;right:1rem;background:#282828fa;border:1px solid rgba(255,255,255,.1);border-radius:8px;padding:1rem;margin-bottom:.5rem;display:flex;flex-direction:column;gap:.5rem;align-items:center;box-shadow:0 4px 12px #00000080;z-index:100;min-width:200px}.volume-slider input[type=range]{width:100%;height:4px;background:#fff3;border-radius:2px;outline:none;-webkit-appearance:none;appearance:none}.volume-slider input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;background:var(--accent-green);border-radius:50%;cursor:pointer}.volume-slider input[type=range]::-moz-range-thumb{width:16px;height:16px;background:var(--accent-green);border-radius:50%;cursor:pointer;border:none}.volume-value{font-size:.875rem;color:#ffffffb3;font-weight:500}.track-info{flex:1;min-width:0;display:flex;align-items:center;gap:var(--space-md)}.track-thumbnail{width:48px;height:48px;border-radius:var(--radius);background:linear-gradient(135deg,#1ed760,#1db954);flex-shrink:0;background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;color:var(--bg);font-weight:900;font-size:20px}.track-thumbnail:empty:before{content:"♫"}.result .track-thumbnail{width:56px;height:56px}.meta{flex:1;min-width:0}.title{font-weight:700;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:2px}.artist{font-size:12px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.controls-buttons{display:flex;align-items:center;gap:var(--space-sm)}.player-controls{display:flex;align-items:center;gap:var(--space-sm);flex-shrink:0}.player-controls .btn{width:40px;height:40px;border-radius:50%;border:none;background:none;color:var(--text);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s;font-size:18px}.player-controls .btn-play{background:var(--text);color:var(--bg);width:40px;height:40px}.player-controls .btn-play:active{transform:scale(.95)}.volume-control{display:none}.bottom-nav{grid-area:nav;display:flex;background:var(--bg-elevated);border-top:1px solid rgba(255,255,255,.05);width:100%;max-width:100vw;overflow:hidden;padding-bottom:max(var(--safe-bottom),8px)}.nav-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:var(--space-sm) 0;min-height:56px;text-decoration:none;color:var(--text-muted);font-size:11px;font-weight:600;transition:color .2s;min-width:0;overflow:hidden}.nav-item svg{width:24px;height:24px;opacity:.7;transition:opacity .2s;flex-shrink:0}.nav-item span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.nav-item.active{color:var(--text)}.nav-item.active svg{opacity:1}.view,.view--queue{padding:var(--space-md)}.section{margin-bottom:var(--space-lg)}.section-header{font-size:22px;font-weight:900;margin-bottom:var(--space-md);letter-spacing:-.5px}.empty,.loading,.error{text-align:center;padding:var(--space-lg) var(--space-md);color:var(--text-muted);font-size:14px}.error{color:var(--danger)}.results{display:flex;flex-direction:column;gap:var(--space-sm);max-width:100%}.search-results{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-md);max-width:100%}.search-summary{font-size:13px;color:var(--text-muted);letter-spacing:.2px}.result{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-md);background:var(--bg-card);border-radius:var(--radius);transition:background .2s;max-width:100%;overflow:hidden}.result:active{background:var(--bg-hover)}.result .meta{flex:1;min-width:0}.result .title{font-size:15px;font-weight:600;margin-bottom:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result .artist{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.result .actions{display:flex;gap:var(--space-sm)}.queue-items{display:flex;flex-direction:column;gap:var(--space-sm)}.queue-item{display:grid;grid-template-columns:28px 1fr auto auto;gap:var(--space-md);align-items:center;padding:var(--space-md);background:var(--bg-card);border-radius:var(--radius)}.queue-item.is-now{background:#1ed7601a;border:1px solid rgba(30,215,96,.3)}.queue-item .position{font-weight:700;font-size:14px;color:var(--text-muted);text-align:center}.queue-item .attribution{grid-column:2 / -1;font-size:12px;color:var(--text-muted);margin-top:4px}.queue-item-wrapper{position:relative;display:flex;flex-direction:column;gap:var(--space-xs);animation:fadeInUp .3s ease-out}.queue-item-wrapper:before{content:attr(data-position);position:absolute;left:-32px;top:50%;transform:translateY(-50%);font-size:18px;font-weight:700;color:var(--text-muted);opacity:.5;width:24px;text-align:right}.queue-item-wrapper--playing:before{content:"▶";color:var(--accent);opacity:1;animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.queue-item-wrapper--playing .track-card{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 4px 12px #1ed76033}.queue-delete{position:absolute;top:50%;right:var(--space-sm);transform:translateY(-50%);width:44px;height:44px;padding:0;display:flex;align-items:center;justify-content:center;z-index:10;background:#000c;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-radius:var(--radius);border:1px solid rgba(255,255,255,.1);transition:all .2s ease}.queue-delete:hover{background:var(--danger);border-color:var(--danger);transform:translateY(-50%) scale(1.05);box-shadow:0 4px 12px #f15e6c4d}.queue-delete svg{width:20px;height:20px}.queue-attribution{font-size:11px;color:var(--text-muted);margin-top:4px;padding-left:calc(72px + var(--space-md));display:flex;align-items:center;gap:6px}.queue-attribution .user-badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:var(--radius);font-weight:600;font-size:10px;text-transform:uppercase;letter-spacing:.5px}.queue-attribution .user-badge.role-host{background:#1ed76026;color:var(--accent);border:1px solid rgba(30,215,96,.3)}.queue-attribution .user-badge.role-admin{background:#ffb30026;color:#ffb300;border:1px solid rgba(255,179,0,.3)}.queue-attribution .user-badge.role-guest{background:#ffffff0d;color:var(--text-muted);border:1px solid rgba(255,255,255,.1)}.search-result-item{position:relative;animation:fadeInUp .3s ease-out}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.btn{padding:10px 20px;border:none;border-radius:var(--radius-full);font-weight:700;font-size:14px;cursor:pointer;transition:all .2s;background:var(--bg-card);color:var(--text)}.btn:active{transform:scale(.98)}.btn-primary{background:var(--accent);color:var(--bg)}.btn-primary:active{background:var(--accent-dark)}.btn-danger{background:var(--danger);color:#fff}.btn-sm{padding:6px 14px;font-size:12px}.search-input,input[type=text],input[type=number],select{width:100%;padding:12px var(--space-md);background:var(--bg-card);border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-lg);color:var(--text);font-size:14px;outline:none}input:focus,select:focus{border-color:var(--accent)}input::placeholder{color:var(--text-muted)}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:2px;background:#ffffff1a;outline:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:12px;height:12px;border-radius:50%;background:var(--text);cursor:pointer}input[type=range]::-webkit-slider-thumb:active{background:var(--accent)}.user-badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;font-size:11px;font-weight:700;text-transform:uppercase}.user-badge.role-host{background:#ff2d5533;color:#ff2d55}.user-badge.role-admin{background:#ff950033;color:#ff9500}.user-badge.role-guest{background:#34c75933;color:#34c759}.user-badge.role-temp-guest{background:#5ac8fa33;color:#5ac8fa}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#fff3;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.admin-row{display:flex;gap:var(--space-sm);margin-bottom:var(--space-md);flex-wrap:wrap}.log{background:var(--bg-card);padding:var(--space-md);border-radius:var(--radius);font-family:Courier New,monospace;font-size:12px;white-space:pre-wrap;word-break:break-all;max-height:300px;overflow-y:auto;color:var(--accent)}.form-grid{display:grid;gap:var(--space-md);margin-bottom:var(--space-md)}.form-grid label{display:flex;flex-direction:column;gap:var(--space-xs)}.label-text{font-size:13px;font-weight:600;color:var(--text)}.form-grid small{font-size:11px;color:var(--text-muted);margin-top:2px}.invitations-list{overflow-x:auto;margin-top:var(--space-md)}.invitations-table{width:100%;border-collapse:collapse;background:var(--bg-card);border-radius:var(--radius)}.invitations-table th,.invitations-table td{padding:var(--space-md);text-align:left;border-bottom:1px solid rgba(255,255,255,.05)}.invitations-table th{font-size:12px;font-weight:700;color:var(--text-muted);text-transform:uppercase}.invitations-table td{font-size:13px}.role-badge{display:inline-block;padding:4px 8px;border-radius:4px;font-size:10px;font-weight:700;text-transform:uppercase}.role-badge.role-host{background:#ff2d5533;color:#ff2d55}.role-badge.role-admin{background:#ff950033;color:#ff9500}.role-badge.role-guest{background:#34c75933;color:#34c759}.role-badge.role-temp-guest{background:#5ac8fa33;color:#5ac8fa}.queue-header{position:relative;padding:var(--space-md);background:var(--bg-card);border-radius:var(--radius);margin-bottom:var(--space-md)}.queue-header-content{display:flex;align-items:center;justify-content:space-between}.queue-header-title{font-size:18px;font-weight:700;color:var(--text)}.queue-header-menu{position:relative}.queue-header-menu-button{display:flex;align-items:center;justify-content:center;width:32px;height:32px;background:transparent;border:none;color:var(--text-muted);cursor:pointer;border-radius:var(--radius);transition:all .2s}.queue-header-menu-button:hover{background:var(--bg-hover);color:var(--text)}.queue-header-menu-button:active{transform:scale(.95)}.queue-header-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:240px;background:var(--bg-card);border-radius:var(--radius);box-shadow:0 8px 24px #0006;overflow:hidden;z-index:100;animation:dropdownSlide .2s ease-out}@keyframes dropdownSlide{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.queue-header-dropdown-item{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-md);background:transparent;border:none;color:var(--text);cursor:pointer;font-size:14px;text-align:left;transition:background .2s}.queue-header-dropdown-item:hover{background:var(--bg-hover)}.queue-header-dropdown-item:active{background:#ffffff14}.queue-header-dropdown-item svg{flex-shrink:0;opacity:.7}.queue-header-dropdown-item--danger{color:var(--danger)}.queue-header-dropdown-item--danger:hover{background:#ff2d551a}.history-section{margin-bottom:var(--space-lg)}.history-section-header{display:flex;align-items:center;gap:var(--space-sm);width:100%;padding:var(--space-md);background:var(--bg-card);border:none;border-radius:var(--radius);color:var(--text-muted);cursor:pointer;font-size:14px;font-weight:600;transition:all .2s}.history-section-header:hover{background:var(--bg-hover);color:var(--text)}.history-section-header:active{transform:scale(.98)}.history-section-icon{display:flex;align-items:center;justify-content:center;transition:transform .2s}.history-section-title{flex:1;text-align:left}.history-section-content{max-height:2000px;overflow:hidden;transition:max-height .3s ease-out,opacity .3s;opacity:1}.history-section-content--collapsed{max-height:0;opacity:0}.history-section-list{display:flex;flex-direction:column;gap:var(--space-sm);padding:var(--space-md) 0;opacity:.6}.history-section-list .track-card{transition:opacity .2s}.history-section-list .track-card:hover{opacity:1}.history-section-empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);padding:var(--space-xl);color:var(--text-muted);opacity:.6}.history-section-empty svg{opacity:.4}.history-section-empty p{font-size:13px}.now-playing-section{margin-bottom:var(--space-lg);padding:var(--space-lg);background:var(--bg-card);border-radius:var(--radius);border:2px solid var(--accent);box-shadow:0 0 20px #ff2d554d;position:relative;animation:glowPulse 3s ease-in-out infinite}.now-playing-section:before{content:"";position:absolute;inset:-2px;background:linear-gradient(45deg,var(--accent),transparent);border-radius:var(--radius);opacity:.1;z-index:-1}.now-playing-header{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);margin-bottom:var(--space-md)}.now-playing-card{margin-bottom:var(--space-md)}.now-playing-progress{margin-top:var(--space-md)}.now-playing-empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);padding:var(--space-xl);color:var(--text-muted)}.now-playing-empty svg{opacity:.3}.now-playing-empty p{font-size:14px}.upnext-section{margin-bottom:var(--space-lg)}.upnext-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md);background:var(--bg-card);border-radius:var(--radius);margin-bottom:var(--space-md)}.upnext-title{font-size:14px;font-weight:700;color:var(--text)}.upnext-count{font-size:12px;color:var(--text-muted)}.upnext-list{display:flex;flex-direction:column;gap:var(--space-sm)}.upnext-item{display:grid;grid-template-columns:40px 1fr;gap:var(--space-sm);align-items:start;padding:var(--space-md);background:var(--bg-card);border-radius:var(--radius-lg);transition:background .2s,transform .2s,opacity .2s;cursor:grab}.upnext-item:hover{background:var(--bg-hover)}.upnext-item:active{cursor:grabbing}.upnext-item--dragging{opacity:.4;transform:scale(.95);cursor:grabbing}.upnext-item--drag-over{border:2px dashed var(--accent);background:rgba(var(--accent-rgb),.1);transform:translateY(-2px)}.upnext-number{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:#ffffff0d;border-radius:50%;font-size:12px;font-weight:700;color:var(--text-muted)}.upnext-card{flex:1;min-width:0;grid-column:2 / -1}.upnext-actions{grid-column:1 / -1;display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:var(--space-sm);margin-top:var(--space-md)}.upnext-action-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;width:100%;min-height:72px;padding:var(--space-sm);background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius-lg);color:var(--text-muted);cursor:pointer;font-size:12px;font-weight:600;transition:all .2s ease}.upnext-action-btn svg{pointer-events:none}.upnext-action-btn:hover{background:#ffffff1a;color:var(--text)}.upnext-action-btn:active{transform:scale(.98)}.upnext-action-btn:disabled{opacity:.4;cursor:not-allowed}.upnext-action-btn--vote{color:var(--accent);border-color:#1ed7604d}.upnext-action-btn--vote:hover{background:#1ed76026}.upnext-action-btn--remove{color:var(--danger);border-color:#ff63844d}.upnext-action-btn--remove:hover{background:#ff63841a}.upnext-action-btn--move{color:var(--text-muted)}.upnext-action-label{font-size:12px}.upnext-empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);padding:var(--space-xl);color:var(--text-muted);background:var(--bg-card);border-radius:var(--radius)}.upnext-empty svg{opacity:.3}.upnext-empty p{font-size:14px}.queue-list{display:flex;flex-direction:column;gap:var(--space-md);padding:var(--space-md) 0;overflow-y:auto;max-height:calc(100vh - 180px);scroll-behavior:smooth}.queue-list-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-lg);padding:var(--space-2xl);min-height:300px;color:var(--text-muted)}.queue-list-empty svg{opacity:.3}.queue-list-empty p{font-size:16px;opacity:.7}.queue-list-section{display:flex;flex-direction:column;gap:var(--space-sm)}.queue-list-section--current{position:sticky;top:0;z-index:10;padding:var(--space-md) 0;background:var(--bg)}.queue-list-divider{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.8px;color:var(--text-muted);opacity:.6}.queue-list-divider:before,.queue-list-divider:after{content:"";flex:1;height:1px;background:linear-gradient(to right,transparent,var(--text-muted),transparent);opacity:.15}.queue-list-divider--current{color:var(--accent);opacity:.9}.queue-list-divider--current:before,.queue-list-divider--current:after{background:linear-gradient(to right,transparent,var(--accent),transparent);opacity:.3}.queue-list-items{display:flex;flex-direction:column;gap:var(--space-xs)}.queue-track-item-container{transition:all .3s cubic-bezier(.4,0,.2,1)}.queue-track-item{display:grid;grid-template-columns:[artwork] 56px [info] 1fr [duration] 48px [actions] auto;gap:var(--space-md);align-items:center;min-height:72px;padding:var(--space-sm) var(--space-md);background:var(--bg-card);border-radius:var(--radius-lg);transition:all .2s ease;cursor:pointer;position:relative}.queue-track-item:hover{background:var(--bg-hover);transform:translate(2px)}.queue-track-item--history{opacity:.6}.queue-track-item--history:hover{opacity:.85}.queue-track-item--current{min-height:96px;padding:var(--space-md) var(--space-lg);background:linear-gradient(135deg,rgba(255,45,85,.08) 0%,var(--bg-card) 100%);border:2px solid var(--accent);box-shadow:0 0 20px #ff2d554d,0 4px 12px #0003;transform:scale(1.02);grid-template-columns:[artwork] 80px [info] 1fr [actions] auto;animation:currentTrackGlow 3s ease-in-out infinite}.queue-track-item--current:hover{transform:scale(1.02);background:linear-gradient(135deg,rgba(255,45,85,.12) 0%,var(--bg-hover) 100%)}@keyframes currentTrackGlow{0%,to{box-shadow:0 0 20px #ff2d554d,0 4px 12px #0003}50%{box-shadow:0 0 30px #ff2d5580,0 4px 16px #0000004d}}.queue-track-item-drag{grid-column:artwork;display:flex;align-items:center;justify-content:center;width:32px;height:100%;color:var(--text-muted);opacity:0;transition:opacity .2s;cursor:grab;margin-right:-8px}.queue-track-item:hover .queue-track-item-drag{opacity:.5}.queue-track-item-drag:hover{opacity:1!important}.queue-track-item-drag:active{cursor:grabbing}.queue-track-item:has(.queue-track-item-drag){grid-template-columns:[drag] 32px [artwork] 56px [info] 1fr [duration] 48px [actions] auto}.queue-track-item-artwork{grid-column:artwork;width:56px;height:56px;background:var(--bg-hover);border-radius:var(--radius);background-size:cover;background-position:center;display:flex;align-items:center;justify-content:center;color:var(--text-muted);flex-shrink:0;transition:all .2s}.queue-track-item--current .queue-track-item-artwork{width:80px;height:80px;border-radius:var(--radius-lg);box-shadow:0 4px 12px #0000004d}.queue-track-item-info{grid-column:info;display:flex;flex-direction:column;gap:4px;min-width:0;justify-content:center}.queue-track-item-title{font-size:14px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.queue-track-item--current .queue-track-item-title{font-size:16px;font-weight:700;color:var(--accent)}.queue-track-item-artist{font-size:13px;color:var(--text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.queue-track-item--current .queue-track-item-artist{font-size:14px}.queue-track-item-progress{margin-top:8px}.queue-track-item-duration{grid-column:duration;font-size:13px;color:var(--text-muted);text-align:right;font-variant-numeric:tabular-nums}.queue-track-item-actions{grid-column:actions;display:flex;align-items:center;gap:var(--space-xs);opacity:0;transition:opacity .2s}.queue-track-item:hover .queue-track-item-actions,.queue-track-item--current .queue-track-item-actions{opacity:1}.queue-track-item-actions-group{display:flex;align-items:center;gap:6px}.queue-track-item-action{position:relative;display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;background:#ffffff0d;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);color:var(--text-muted);cursor:pointer;transition:all .2s ease}.queue-track-item-action:hover{background:#ffffff1f;color:var(--text);transform:scale(1.1)}.queue-track-item-action:active{transform:scale(.95)}.queue-track-item-action--danger{color:var(--danger);border-color:#ff63844d}.queue-track-item-action--danger:hover{background:#ff638426;border-color:#ff638480}.queue-track-item-badge{position:absolute;top:-4px;right:-4px;display:flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 4px;background:var(--accent);color:var(--bg);border-radius:9px;font-size:10px;font-weight:700;pointer-events:none}.queue-track-item-container.queue-track-item--dragging{opacity:.5;transform:scale(.98)}.queue-track-item-container.queue-track-item--drag-over{transform:translateY(-4px)}.queue-track-item-container.queue-track-item--drag-over:before{content:"";position:absolute;inset:-2px;border:2px dashed var(--accent);border-radius:var(--radius-lg);background:#ff2d550d;pointer-events:none}.help-dialog{display:flex;flex-direction:column;gap:var(--space-lg);max-width:520px}.help-dialog section h3{margin:0 0 var(--space-sm) 0;font-size:16px}.help-dialog ul{margin:0;padding-left:var(--space-lg);color:var(--text-secondary);font-size:14px;display:flex;flex-direction:column;gap:8px}.help-dialog kbd{display:inline-block;padding:2px 6px;border-radius:4px;background:#ffffff14;border:1px solid rgba(255,255,255,.15);font-size:12px}.view--playlists{padding:var(--space-lg);padding-bottom:calc(var(--space-xl) * 3)}.playlists-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-xl);gap:var(--space-md)}.playlists-header h1{font-size:24px;font-weight:700;margin:0}.playlists-loading{display:flex;justify-content:center;align-items:center;padding:var(--space-xl);color:var(--text-muted)}.playlists-empty{display:flex;justify-content:center;align-items:center;min-height:50vh}.playlists-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--space-lg)}.playlist-card{background:var(--bg-card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-sm);transition:transform .2s,box-shadow .2s}.playlist-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-md)}.playlist-card__thumbnail{width:100%;aspect-ratio:1;background:linear-gradient(135deg,var(--accent-1),var(--accent-2));display:flex;align-items:center;justify-content:center;position:relative}.playlist-card__thumbnail img{width:100%;height:100%;object-fit:cover}.playlist-card__thumbnail .placeholder{font-size:64px;opacity:.6}.playlist-card__content{padding:var(--space-md)}.playlist-card__name{font-size:16px;font-weight:600;margin:0 0 var(--space-xs) 0;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.playlist-card__description{font-size:13px;color:var(--text-muted);margin:0 0 var(--space-sm) 0;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;min-height:2.6em}.playlist-card__meta{display:flex;gap:var(--space-sm);align-items:center;font-size:12px}.playlist-card__meta .track-count{color:var(--text-muted)}.playlist-card__actions{padding:var(--space-md);padding-top:0;display:flex;gap:var(--space-sm)}.playlist-card__actions .btn{flex:1}.badge--private{background:var(--bg-hover);color:var(--text)}.badge--unlisted{background:#ffc1071a;color:#ffc107}.badge--public{background:#4caf501a;color:#4caf50}@media(max-width:768px){.playlists-grid{grid-template-columns:1fr}.playlists-header{flex-direction:column;align-items:stretch}.playlists-header h1{font-size:20px}}.playlist-dialog-form{display:flex;flex-direction:column;gap:var(--space-lg);min-width:400px;padding:var(--space-md)}@media(max-width:640px){.playlist-dialog-form{min-width:0;padding:var(--space-sm)}}.form-group{display:flex;flex-direction:column;gap:var(--space-sm)}.form-label{font-size:13px;font-weight:600;color:var(--text-primary);letter-spacing:.02em;text-transform:uppercase;opacity:.7}.form-input{padding:14px 16px;background:var(--bg-elevated);border:1.5px solid var(--border-color-strong);border-radius:12px;color:var(--text-primary);font-size:15px;font-family:inherit;line-height:1.5;transition:all .2s cubic-bezier(.4,0,.2,1)}.form-input:hover{background:var(--bg-surface);border-color:var(--border-color-hover)}.form-input:focus{outline:none;background:var(--bg-elevated);border-color:var(--accent);box-shadow:0 0 0 4px #1ed7601a}.form-input::placeholder{color:var(--text-tertiary);opacity:1}textarea.form-input{resize:vertical;min-height:100px;font-family:inherit;line-height:1.6}select.form-input{cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6L8 10L12 6' stroke='%23888' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:40px}select.form-input:focus{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6L8 10L12 6' stroke='%238a2be2' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")}.confirm-dialog-message{padding:var(--space-xl) var(--space-lg);font-size:15px;line-height:1.7;color:var(--text-secondary);text-align:center;max-width:400px;margin:var(--space-md) auto}.confirm-dialog-message--danger{position:relative;padding-top:calc(var(--space-xl) + 48px)}.confirm-dialog-message--danger:before{content:"⚠️";position:absolute;top:var(--space-lg);left:50%;transform:translate(-50%);font-size:48px;line-height:1;opacity:.9}.confirm-dialog-message--warning{position:relative;padding-top:calc(var(--space-xl) + 48px)}.confirm-dialog-message--warning:before{content:"💡";position:absolute;top:var(--space-lg);left:50%;transform:translate(-50%);font-size:48px;line-height:1;opacity:.9}.modal-footer-buttons{display:flex;gap:var(--space-md);justify-content:flex-end;width:100%;padding:var(--space-sm) 0}.modal-footer-buttons .btn{min-width:120px;padding:12px 24px;font-weight:600;font-size:14px;letter-spacing:.02em}@media(max-width:640px){.modal-footer-buttons{flex-direction:column-reverse}.modal-footer-buttons .btn{width:100%}}.btn--danger{background:var(--error);color:#fff;border:none;box-shadow:0 2px 8px #f15e6c4d}.btn--danger:hover{background:var(--error-hover);box-shadow:0 4px 12px #f15e6c66;transform:translateY(-1px)}.btn--danger:active{transform:translateY(0);box-shadow:0 2px 6px #f15e6c4d}.btn--secondary{background:var(--bg-hover);color:var(--text-primary);border:1.5px solid var(--border-color-strong)}.btn--secondary:hover{background:var(--bg-active);border-color:var(--border-color-hover);transform:translateY(-1px)}.btn--secondary:active{transform:translateY(0);background:var(--bg-hover)}.btn--primary{background:var(--accent);color:#fff;border:none;box-shadow:0 2px 8px #1ed7604d}.btn--primary:hover{background:var(--accent-hover);box-shadow:0 4px 12px #1ed76066;transform:translateY(-1px)}.btn--primary:active{transform:translateY(0);box-shadow:0 2px 6px #1ed7604d}@media(max-width:768px){.history-section-content{max-height:0;opacity:0}.history-section-content:not(.history-section-content--collapsed){max-height:2000px;opacity:1}.history-section-icon{transform:rotate(180deg);transition:transform .3s ease}.history-section-content:not(.history-section-content--collapsed)+.history-section-header .history-section-icon{transform:rotate(0)}.upnext-item{grid-template-columns:32px 1fr}.upnext-number{width:32px;height:32px;font-size:11px}.upnext-actions{grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.upnext-action-btn{min-height:64px}.now-playing-section{padding:var(--space-md)}.track-card{padding:var(--space-sm)}}@media(max-width:640px){.queue-header-actions{flex-direction:column;width:100%}.queue-header-actions button{width:100%}.view{padding:var(--space-sm)}.section{margin-bottom:var(--space-md)}.upnext-item{cursor:grab;-webkit-tap-highlight-color:transparent}.upnext-item:active{cursor:grabbing}.playlists-grid{grid-template-columns:1fr;gap:var(--space-sm)}}@media(hover:none)and (pointer:coarse){.btn{min-height:44px;padding:12px 20px}.upnext-action-btn{min-width:56px;min-height:72px}.upnext-item:hover,.track-card:hover{background:var(--bg-card)}.upnext-item:active,.track-card:active{background:var(--bg-hover);transform:scale(.98)}}.menu-backdrop{position:fixed;inset:0;background:#0000008c;z-index:999;animation:fadeIn .2s ease}.add-to-playlist-menu{position:fixed;left:50%;bottom:0;transform:translate(-50%);width:min(520px,100%);max-height:85vh;background:var(--bg-card);border-radius:24px 24px 0 0;box-shadow:0 -6px 40px #00000073;z-index:1000;display:flex;flex-direction:column;animation:sheetUp .25s ease}.bottom-sheet__handle{width:56px;height:4px;background:#ffffff4d;border-radius:999px;margin:12px auto 6px}.menu-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-lg);border-bottom:1px solid rgba(255,255,255,.08)}.menu-header h3{margin:0;font-size:16px;font-weight:600;color:var(--text-primary)}.menu-close{border:none;background:#ffffff14;color:var(--text-primary);width:36px;height:36px;border-radius:50%;font-size:18px;cursor:pointer;transition:background .2s ease}.menu-close:hover{background:#ffffff26}.menu-search{padding:0 var(--space-lg) var(--space-md);border-bottom:1px solid rgba(255,255,255,.08)}.menu-search-input{width:100%;padding:12px var(--space-md);border-radius:12px;border:1px solid rgba(255,255,255,.15);background:#ffffff0d;color:var(--text-primary);font-size:14px}.menu-search-input::placeholder{color:var(--text-secondary)}.menu-search-input:focus{outline:2px solid var(--accent);outline-offset:2px}.menu-content{flex:1;overflow-y:auto;padding-bottom:var(--space-lg)}.menu-empty{padding:var(--space-xl);text-align:center;color:var(--text-secondary);font-size:14px}.menu-item{display:flex;align-items:center;gap:var(--space-md);width:100%;padding:var(--space-md) var(--space-lg);background:transparent;border:none;border-bottom:1px solid rgba(255,255,255,.08);cursor:pointer;transition:background .15s ease;text-align:left}.menu-item:last-child{border-bottom:none}.menu-item:hover,.menu-item:focus-visible{background:#ffffff0d}.menu-item__icon{font-size:20px;flex-shrink:0}.menu-item__text{flex:1;min-width:0}.menu-item__name{display:block;font-size:15px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.menu-item__meta{display:block;font-size:13px;color:var(--text-secondary);margin-top:4px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes sheetUp{0%{transform:translate(-50%,20px);opacity:0}to{transform:translate(-50%);opacity:1}}.view--playlist-editor{height:100%;overflow-y:auto}.playlist-editor{max-width:900px;margin:0 auto;padding:var(--space-lg)}.playlist-editor__header{display:flex;align-items:flex-start;gap:var(--space-lg);margin-bottom:var(--space-xl);padding-bottom:var(--space-lg);border-bottom:1px solid var(--border-color)}.playlist-editor__info h1{margin:0 0 var(--space-xs) 0;font-size:28px;font-weight:700;color:var(--text-primary)}.playlist-editor__description{margin:0;color:var(--text-secondary);font-size:14px}.playlist-editor__empty{padding:var(--space-3xl) 0}.playlist-editor__track-list{display:flex;flex-direction:column;gap:var(--space-xs)}.playlist-track-item{display:flex;align-items:center;gap:var(--space-md);padding:var(--space-sm) var(--space-md);background:var(--bg-elevated);border:1px solid var(--border-color);border-radius:6px;cursor:grab;transition:all .2s ease}.playlist-track-item:hover{background:var(--bg-hover);border-color:var(--border-color-hover)}.playlist-track-item.dragging{opacity:.5;cursor:grabbing}.playlist-track-item__drag-handle{color:var(--text-tertiary);flex-shrink:0;cursor:grab}.playlist-track-item__drag-handle:active{cursor:grabbing}.playlist-track-item__number{width:32px;text-align:center;color:var(--text-tertiary);font-size:14px;font-weight:500;flex-shrink:0}.playlist-track-item__thumbnail{width:48px;height:48px;border-radius:4px;object-fit:cover;flex-shrink:0}.playlist-track-item__thumbnail.placeholder{display:flex;align-items:center;justify-content:center;background:var(--bg-active);font-size:20px}.playlist-track-item__info{flex:1;min-width:0}.playlist-track-item__title{font-size:14px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.playlist-track-item__artist{font-size:13px;color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-top:2px}.playlist-track-item__duration{font-size:13px;color:var(--text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0}.playlist-track-item__actions{display:flex;align-items:center;gap:var(--space-xs);flex-shrink:0}.playlist-track-item__action{display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:64px;min-height:64px;padding:var(--space-xs);border-radius:10px;border:1px solid rgba(255,255,255,.1);background:#ffffff05;color:var(--text-secondary);cursor:pointer;font-size:11px;font-weight:600;transition:all .2s ease}.playlist-track-item__action:hover:not(:disabled){background:#ffffff14;color:var(--text-primary);border-color:#fff3}.playlist-track-item__action:disabled{opacity:.35;cursor:not-allowed}.playlist-track-item__action-icon{font-size:16px}.playlist-track-item__action-label{margin-top:4px}.playlist-track-item__action--danger{color:var(--danger);border-color:#ff638466}.playlist-track-item__action--danger:hover:not(:disabled){background:#ff638414;color:var(--danger)}.playlist-editor__error{text-align:center;padding:var(--space-3xl)}.playlist-editor__error h2{margin:0 0 var(--space-md) 0;font-size:24px;color:var(--text-primary)}.playlist-editor__error p{margin:0 0 var(--space-lg) 0;color:var(--text-secondary)}@media(max-width:768px){.playlist-editor{padding:var(--space-md)}.playlist-editor__header{flex-direction:column;gap:var(--space-md)}.playlist-track-item{gap:var(--space-sm);padding:var(--space-xs) var(--space-sm)}.playlist-track-item__thumbnail{width:40px;height:40px}.playlist-track-item__number{width:24px;font-size:12px}.playlist-track-item{flex-wrap:wrap}.playlist-track-item__actions{width:100%;justify-content:space-between;margin-top:var(--space-sm)}.playlist-track-item__action{flex:1;min-width:0;min-height:56px}}@media(hover:none)and (pointer:coarse){.playlist-track-item,.playlist-track-item__drag-handle{cursor:default}}
