*{margin:0;padding:0;box-sizing:border-box}*:before,*:after{box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{min-height:100vh;line-height:1.5}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}button{cursor:pointer}a{color:inherit;text-decoration:none}ul,ol{list-style:none}:root{--bg: #FAFAF8;--surface: #FFFFFF;--text-primary: #1A1A1A;--text-secondary: #666666;--text-tertiary: #999999;--border: #E5E5E3;--accent: #FF5500;--accent-soft: #FFF4EE;--success: #4caf50;--warning: #ff9800;--error: #f44336;--loved: #e91e63;--font-sans: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "JetBrains Mono", "SF Mono", Monaco, "Courier New", monospace;--text-xs: .6875rem;--text-sm: .75rem;--text-base: .8125rem;--text-md: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-6: 1.5rem;--space-8: 2rem;--space-12: 3rem;--space-16: 4rem;--max-width: 1600px;--header-height: 72px;--transition-fast: .15s ease;--transition-base: .2s ease;--transition-slow: .3s ease;--shadow-sm: 0 1px 2px rgba(0,0,0,.05);--shadow-md: 0 2px 4px rgba(0,0,0,.1);--shadow-lg: 0 4px 8px rgba(0,0,0,.15);--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-full: 9999px}body{font-family:var(--font-sans);background:var(--bg);color:var(--text-primary);font-size:var(--text-base)}h1{font-size:var(--text-2xl);font-weight:600;letter-spacing:-.02em;line-height:1.2}h2{font-size:var(--text-xl);font-weight:600;letter-spacing:-.01em;line-height:1.3}h3{font-size:var(--text-lg);font-weight:600;line-height:1.4}p{line-height:1.6}.mono{font-family:var(--font-mono)}.text-secondary{color:var(--text-secondary)}.text-tertiary{color:var(--text-tertiary)}.container{max-width:var(--max-width);margin:0 auto;padding:0 var(--space-8)}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.items-center{align-items:center}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:var(--space-1)}.gap-2{gap:var(--space-2)}.gap-3{gap:var(--space-3)}.gap-4{gap:var(--space-4)}.gap-6{gap:var(--space-6)}.gap-8{gap:var(--space-8)}.mt-1{margin-top:var(--space-1)}.mt-2{margin-top:var(--space-2)}.mt-3{margin-top:var(--space-3)}.mt-4{margin-top:var(--space-4)}.mt-6{margin-top:var(--space-6)}.mt-8{margin-top:var(--space-8)}.mb-1{margin-bottom:var(--space-1)}.mb-2{margin-bottom:var(--space-2)}.mb-3{margin-bottom:var(--space-3)}.mb-4{margin-bottom:var(--space-4)}.mb-6{margin-bottom:var(--space-6)}.mb-8{margin-bottom:var(--space-8)}.header{background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:100;height:var(--header-height)}.header-inner{max-width:var(--max-width);margin:0 auto;padding:var(--space-4) var(--space-8);display:flex;align-items:center;justify-content:space-between;gap:var(--space-8);height:100%}.header-right{display:flex;align-items:center;gap:var(--space-4)}.logo{font-weight:600;font-size:var(--text-lg);letter-spacing:-.02em;white-space:nowrap}.settings-cog{width:36px;height:36px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;flex-shrink:0}.settings-cog:hover{background:var(--bg);color:var(--text-primary)}.settings-cog svg{display:block}.nav{display:flex;gap:var(--space-1);background:var(--bg);padding:var(--space-1);border-radius:var(--radius-md);flex:1;justify-content:center;max-width:600px}.nav-item{font-family:var(--font-mono);font-size:var(--text-sm);padding:var(--space-2) var(--space-4);border:none;background:transparent;color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);white-space:nowrap;flex-shrink:0}.nav-item:hover{color:var(--text-primary)}.nav-item.active{background:var(--surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.button{font-size:var(--text-sm);font-weight:500;padding:var(--space-2) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-primary);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.button:hover{border-color:var(--text-secondary)}.button-primary{background:var(--accent);color:#fff;border-color:var(--accent)}.button-primary:hover{opacity:.9}.modal-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background:#0006;z-index:200;display:none;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.modal-backdrop.active{display:block}.modal{position:fixed;top:0;right:0;width:500px;max-width:90vw;height:100vh;background:var(--surface);box-shadow:-2px 0 8px #0000001a;overflow-y:auto;transform:translate(100%);transition:transform var(--transition-slow);z-index:201;display:flex;flex-direction:column}.modal.active{transform:translate(0)}.modal-header{padding:var(--space-6);border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between}.modal-title{font-size:var(--text-xl);font-weight:600}.modal-close{width:32px;height:32px;border:none;background:transparent;color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center}.modal-close:hover{background:var(--bg);color:var(--text-primary)}.modal-body{flex:1;padding:var(--space-6);overflow-y:auto}.modal-footer{padding:var(--space-6);border-top:1px solid var(--border);display:flex;gap:var(--space-3);justify-content:flex-end}.form-group{margin-bottom:var(--space-6)}.form-label{display:block;font-size:var(--text-sm);font-weight:500;margin-bottom:var(--space-2);color:var(--text-secondary)}.form-input,.form-select{width:100%;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);font-size:var(--text-base);transition:all var(--transition-fast)}.form-input:focus,.form-select:focus{outline:none;border-color:var(--accent)}.form-input::placeholder{color:var(--text-tertiary)}.form-help{font-size:var(--text-xs);color:var(--text-tertiary);margin-top:var(--space-1)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-4);transition:all var(--transition-fast)}.card:hover{box-shadow:var(--shadow-md)}.grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}@media(max-width:768px){.grid{grid-template-columns:repeat(2,1fr);gap:var(--space-3)}}.album-modal-backdrop{position:fixed;top:0;left:0;width:100%;height:100%;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:300;display:none}.album-modal-backdrop.active{display:block}.album-modal{position:fixed;top:0;left:0;width:100%;height:100%;z-index:301;display:none;align-items:center;justify-content:center;padding:var(--space-4)}.album-modal.active{display:flex}.album-modal-content{position:relative;width:100%;max-width:600px;max-height:90vh;background:var(--surface);border-radius:var(--radius-lg);overflow-y:auto;box-shadow:0 20px 60px #0000004d}.album-modal-close{position:absolute;top:var(--space-4);right:var(--space-4);width:36px;height:36px;border:none;background:#0000001a;border-radius:var(--radius-full);font-size:24px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:1;color:var(--text-primary);transition:all var(--transition-fast)}.album-modal-close:hover{background:#0003}.modal-container{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--space-4);background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.modal-nav-btn{position:absolute;top:var(--space-4);right:var(--space-4);width:36px;height:36px;border:none;background:#0006;border-radius:var(--radius-full);cursor:pointer;display:flex;align-items:center;justify-content:center;color:#fff;transition:all var(--transition-fast);z-index:10}.modal-nav-btn:hover{background:#0009}.modal-back-btn:hover{background:var(--accent);color:#fff}.modal-container .album-modal{position:relative;top:auto;left:auto;right:auto;bottom:auto;transform:none}.modal-container .album-modal-backdrop{display:none}.album-modal-body{padding:var(--space-6)}.album-modal-cover{width:100%;aspect-ratio:1;object-fit:cover;border-radius:var(--radius-sm);margin-bottom:var(--space-4)}.album-modal-cover-placeholder{width:100%;aspect-ratio:1;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:var(--space-4);display:flex;align-items:center;justify-content:center;color:var(--text-tertiary)}.album-modal-cover-placeholder:after{content:"";display:block;width:48px;height:48px;background:var(--text-tertiary);opacity:.3;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 14.5c-2.49 0-4.5-2.01-4.5-4.5S9.51 7.5 12 7.5s4.5 2.01 4.5 4.5-2.01 4.5-4.5 4.5zm0-5.5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z'/%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='currentColor'%3E%3Cpath d='M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 14.5c-2.49 0-4.5-2.01-4.5-4.5S9.51 7.5 12 7.5s4.5 2.01 4.5 4.5-2.01 4.5-4.5 4.5zm0-5.5c-.55 0-1 .45-1 1s.45 1 1 1 1-.45 1-1-.45-1-1-1z'/%3E%3C/svg%3E");mask-size:contain;-webkit-mask-size:contain}.album-modal-title{font-size:var(--text-2xl);font-weight:600;margin-bottom:var(--space-2);line-height:1.2}.album-modal-artist{font-size:var(--text-lg);color:var(--text-secondary);margin-bottom:var(--space-4)}.album-modal-meta{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-3);padding:var(--space-4);background:var(--bg);border-radius:var(--radius-sm);margin-bottom:var(--space-6)}.album-modal-meta-item{display:flex;flex-direction:column;gap:var(--space-1)}.album-modal-meta-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary)}.album-modal-meta-value{font-size:var(--text-sm);color:var(--text-primary)}.album-modal-section{margin-top:var(--space-6)}.album-modal-section h3{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin-bottom:var(--space-3)}.album-modal-tracklist{list-style:none}.album-modal-track{display:grid;grid-template-columns:40px 1fr auto;gap:var(--space-2);padding:var(--space-2) 0;border-bottom:1px solid var(--border);font-size:var(--text-sm)}.album-modal-track:last-child{border-bottom:none}.album-modal-track-pos,.album-modal-track-duration{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-xs)}.album-modal-credits{display:flex;flex-direction:column;gap:var(--space-2)}.album-modal-credit{display:flex;gap:var(--space-2);font-size:var(--text-sm)}.album-modal-credit-role{color:var(--text-tertiary);min-width:100px}.album-modal-links{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-6);padding-top:var(--space-6);border-top:1px solid var(--border)}.album-modal-link{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);text-decoration:none;font-size:var(--text-sm);font-weight:500;transition:all var(--transition-fast)}.album-modal-link:hover{background:var(--surface);border-color:var(--accent);color:var(--accent);transform:translate(4px)}.service-icon{flex-shrink:0;opacity:.8;transition:opacity var(--transition-fast)}.album-modal-link:hover .service-icon{opacity:1}.modal-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-12);color:var(--text-secondary)}.modal-spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:var(--radius-full);animation:spin .8s linear infinite;margin-bottom:var(--space-4)}.controls{background:var(--surface);border-bottom:1px solid var(--border);position:sticky;top:var(--header-height);z-index:50}.controls-inner{max-width:var(--max-width);margin:0 auto;padding:var(--space-4) var(--space-8);display:flex;align-items:center;gap:var(--space-4)}.search-input{flex:1;min-width:200px;padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-base);background:var(--bg);transition:all var(--transition-fast)}.search-input:focus{outline:none;border-color:var(--accent);background:var(--surface)}.control-group{display:flex;align-items:center;gap:var(--space-2)}.control-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);white-space:nowrap}.sort-select{font-family:var(--font-mono);font-size:var(--text-sm);padding:var(--space-2) var(--space-8) var(--space-2) var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);cursor:pointer;transition:all var(--transition-fast)}.sort-select:focus{outline:none;border-color:var(--accent)}.sort-direction{width:32px;height:32px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:16px;transition:all var(--transition-fast);color:var(--text-secondary)}.sort-direction:hover{border-color:var(--accent);color:var(--accent)}.collection-stats{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-secondary);white-space:nowrap}@media(max-width:768px){.controls-inner{flex-wrap:wrap;padding:var(--space-3) var(--space-4);gap:var(--space-2)}.search-container{width:100%;order:-2}.search-input{width:100%}#filter-toggle{order:-1}.control-group{flex:0 0 auto}.collection-stats{flex:1;text-align:center;font-size:var(--text-xs)}.actions-accordion{flex:0 0 auto}.collection-stats{width:100%;margin-left:0;margin-top:var(--space-2);text-align:center}.album-modal-content{max-height:100vh;border-radius:0}.album-modal{padding:0}}.filter-panel{position:fixed;right:0;top:var(--header-height);width:320px;height:calc(100vh - var(--header-height));background:var(--surface);border-left:1px solid var(--border);box-shadow:var(--shadow-lg);z-index:200;display:flex;flex-direction:column;transform:translate(100%);transition:transform .3s ease}.filter-panel.open{transform:translate(0)}.filter-panel-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background:#0000004d;z-index:199;opacity:0;pointer-events:none;transition:opacity .3s ease}.filter-panel.open~.filter-panel-backdrop{opacity:1;pointer-events:all}.filter-panel-header{padding:var(--space-4);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center}.filter-panel-header h2{font-size:var(--text-lg);font-weight:600;margin:0}.filter-panel-close{background:none;border:none;font-size:28px;line-height:1;color:var(--text-secondary);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:color var(--transition-fast)}.filter-panel-close:hover{color:var(--text-primary)}.filter-panel-content{flex:1;overflow-y:auto;padding:var(--space-4)}.filter-panel-footer{padding:var(--space-4);border-top:1px solid var(--border);display:flex;gap:var(--space-2);flex-direction:column}.filter-group{margin-bottom:var(--space-4)}.filter-group-header{width:100%;display:flex;justify-content:space-between;align-items:center;padding:var(--space-3);background:var(--bg);border:none;border-radius:var(--radius-sm);cursor:pointer;font-weight:500;font-size:var(--text-sm);color:var(--text-primary);transition:background var(--transition-fast)}.filter-group-header:hover{background:var(--border)}.filter-group-title{font-family:var(--font-mono);letter-spacing:.02em;text-transform:uppercase}.filter-group-icon{color:var(--text-tertiary);font-size:var(--text-xs)}.filter-group-content{padding:var(--space-3) var(--space-2)}.filter-checkboxes,.filter-radios{display:flex;flex-direction:column;gap:var(--space-2);max-height:300px;overflow-y:auto}.filter-checkbox,.filter-radio{display:flex;align-items:center;gap:var(--space-2);cursor:pointer;padding:var(--space-2);border-radius:var(--radius-sm);transition:background var(--transition-fast)}.filter-checkbox:hover,.filter-radio:hover{background:var(--accent-soft)}.filter-checkbox input,.filter-radio input{cursor:pointer}.filter-checkbox-label,.filter-radio-label{flex:1;font-size:var(--text-sm);display:flex;justify-content:space-between;align-items:center}.filter-count{color:var(--text-tertiary);font-size:var(--text-xs);font-family:var(--font-mono)}.year-range-display{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-3);padding:var(--space-3);background:var(--bg);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-md);font-weight:500}.year-range-sliders{display:flex;flex-direction:column;gap:var(--space-3)}.year-range-sliders label{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);font-weight:500;color:var(--text-secondary)}.year-range-sliders input[type=range]{flex:1;height:4px;border-radius:2px;background:var(--border);outline:none;-webkit-appearance:none}.year-range-sliders input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--accent);cursor:pointer;transition:transform var(--transition-fast)}.year-range-sliders input[type=range]::-webkit-slider-thumb:hover{transform:scale(1.2)}.year-range-sliders input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--accent);cursor:pointer;border:none;transition:transform var(--transition-fast)}.year-range-sliders input[type=range]::-moz-range-thumb:hover{transform:scale(1.2)}.active-filters{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;padding:var(--space-3) 0}.filter-pill{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--accent-soft);color:var(--accent);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:500;border:1px solid transparent;transition:all var(--transition-fast)}.filter-pill:hover{border-color:var(--accent)}.filter-pill-remove{background:none;border:none;color:var(--accent);font-size:16px;line-height:1;cursor:pointer;padding:0;width:16px;height:16px;display:flex;align-items:center;justify-content:center;transition:opacity var(--transition-fast)}.filter-pill-remove:hover{opacity:.7}.button-link{background:none;border:none;color:var(--text-secondary);font-size:var(--text-xs);text-decoration:underline;cursor:pointer;padding:0;transition:color var(--transition-fast)}.button-link:hover{color:var(--text-primary)}@media(max-width:768px){.filter-panel{width:100%;left:0;right:0;transform:translateY(100%)}.filter-panel.open{transform:translateY(0)}.filter-panel-content{padding:var(--space-3)}.filter-checkboxes,.filter-radios{max-height:200px}.active-filters{flex-direction:column;align-items:flex-start}}.batch-toolbar{position:fixed;bottom:0;left:0;right:0;height:60px;background:var(--surface);border-top:2px solid var(--accent);box-shadow:0 -4px 12px #0000001a;display:flex;align-items:center;justify-content:space-between;padding:0 var(--space-4);transform:translateY(100%);transition:transform .3s ease;z-index:150}.batch-toolbar.visible{transform:translateY(0)}.batch-toolbar-left{display:flex;align-items:center;gap:var(--space-4)}.batch-count{font-weight:600;font-size:var(--text-md);color:var(--text-primary)}.batch-toolbar-actions{display:flex;gap:var(--space-2);align-items:center}.batch-toolbar-btn{display:flex;align-items:center;gap:var(--space-2);font-size:var(--text-sm);padding:var(--space-2) var(--space-3)}.batch-icon{font-size:16px}.batch-label{font-weight:500}.batch-toolbar-close{background:none;border:none;font-size:28px;line-height:1;color:var(--text-secondary);cursor:pointer;padding:0;width:32px;height:32px;display:flex;align-items:center;justify-content:center;transition:color var(--transition-fast)}.batch-toolbar-close:hover{color:var(--text-primary)}.button-secondary{background:var(--bg);border-color:var(--border)}.button-secondary:hover{background:var(--border)}.button-danger{background:var(--error);color:#fff;border-color:var(--error)}.button-danger:hover{opacity:.9}.album-card{transition:all var(--transition-fast)}.album-card.selected{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}.album-card-checkbox{position:absolute;top:var(--space-2);left:var(--space-2);z-index:10;width:24px;height:24px;background:#fffffff2;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 2px 4px #0003}.album-card-checkbox input[type=checkbox]{cursor:pointer;width:18px;height:18px;margin:0}.batch-modal{max-width:500px}.batch-tag-list{max-height:300px;overflow-y:auto;display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-2);background:var(--bg);border-radius:var(--radius-sm)}.batch-tag-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2);cursor:pointer;border-radius:var(--radius-sm);transition:background var(--transition-fast)}.batch-tag-item:hover{background:var(--accent-soft)}.batch-tag-label{flex:1;font-size:var(--text-sm);display:flex;justify-content:space-between}.batch-tag-count{color:var(--text-tertiary);font-family:var(--font-mono);font-size:var(--text-xs)}.selected-tags-preview{margin-top:var(--space-3)}.selected-tags{display:flex;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-3);background:var(--bg);border-radius:var(--radius-sm)}.selected-tag{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-1) var(--space-3);background:var(--accent-soft);color:var(--accent);border-radius:var(--radius-full);font-size:var(--text-sm);font-weight:500}.selected-tag-remove{background:none;border:none;color:var(--accent);font-size:16px;line-height:1;cursor:pointer;padding:0;width:16px;height:16px;display:flex;align-items:center;justify-content:center}.selected-tag-remove:hover{opacity:.7}.rating-selector{display:flex;flex-direction:column;gap:var(--space-2)}.rating-btn{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);font-size:var(--text-md)}.rating-btn:hover{background:var(--accent-soft);border-color:var(--accent)}.rating-number{font-family:var(--font-mono);font-weight:600;color:var(--text-primary)}.rating-btn-clear{color:var(--text-secondary);justify-content:center}.status-selector{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2)}.status-btn{display:flex;flex-direction:column;align-items:center;gap:var(--space-2);padding:var(--space-4);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.status-btn:hover{background:var(--accent-soft);border-color:var(--accent)}.status-icon{font-size:32px}.status-label{font-size:var(--text-sm);font-weight:500;color:var(--text-primary)}.toast{position:fixed;bottom:80px;right:var(--space-4);background:var(--text-primary);color:var(--surface);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);font-size:var(--text-sm);font-weight:500;box-shadow:var(--shadow-lg);z-index:300;opacity:0;transform:translateY(10px);transition:all .3s ease;max-width:320px}.toast.visible{opacity:1;transform:translateY(0)}.toast-success{background:var(--success)}.toast-error{background:var(--error)}.toast-info{background:var(--text-primary)}@media(max-width:768px){.batch-toolbar{height:auto;flex-direction:column;padding:var(--space-3);gap:var(--space-3)}.batch-toolbar-left{width:100%;justify-content:space-between}.batch-toolbar-actions{width:100%;display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-2)}.batch-label{display:none}.batch-toolbar-btn{justify-content:center;padding:var(--space-3)}.batch-icon{font-size:20px}.album-card-checkbox{width:44px;height:44px}.album-card-checkbox input[type=checkbox]{width:24px;height:24px}.status-selector{grid-template-columns:1fr}.toast{right:var(--space-3);left:var(--space-3);bottom:100px}}.search-container{position:relative;flex:1;max-width:400px;display:flex;flex-direction:column;gap:var(--space-2)}.search-clear{position:absolute;right:var(--space-2);top:12px;transform:translateY(-50%);background:none;border:none;color:var(--text-secondary);font-size:20px;line-height:1;cursor:pointer;padding:var(--space-2);width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all var(--transition-fast)}.search-clear:hover{background:var(--bg);color:var(--text-primary)}.search-scope-toggles{display:flex;gap:var(--space-2);font-size:var(--text-xs);padding-left:var(--space-2)}.search-scope-toggle{padding:var(--space-1) var(--space-2);border:1px solid var(--border);background:var(--surface);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-primary);cursor:pointer;transition:all .2s}.search-scope-toggle:hover{background:var(--accent-soft);border-color:var(--accent)}.search-scope-toggle.disabled{background:var(--bg);color:var(--text-tertiary);text-decoration:line-through;opacity:.6}.clickable-entity{cursor:pointer;transition:color .2s}.clickable-entity:hover{color:var(--accent);text-decoration:underline}.rating-stars{font-size:18px;letter-spacing:2px;color:var(--accent)}.rating-btn{justify-content:flex-start}.status-btn{padding:var(--space-4);justify-content:center}.status-label{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;font-size:var(--text-xs);font-weight:500}.status-icon{display:none}.enrichment-indicator{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius-full);font-size:var(--text-xs);font-family:var(--font-mono);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.enrichment-indicator:hover{background:var(--accent);color:#fff}.enrichment-status{font-weight:500;letter-spacing:.05em;text-transform:uppercase}.enrichment-progress,.enrichment-percentage{font-weight:400;color:var(--text-secondary)}.enrichment-indicator:hover .enrichment-progress,.enrichment-indicator:hover .enrichment-percentage{color:#fff}@media(max-width:768px){#enrichment-indicator-container{position:fixed;bottom:var(--space-3);right:var(--space-3);z-index:100}.enrichment-percentage{display:none}}.source-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-2);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-xs);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;font-weight:500}.source-dot{width:8px;height:8px;border-radius:50%}.source-roon .source-dot{background:#3e7eff}.source-discogs .source-dot{background:#f60}.source-label{color:var(--text-primary)}.failed-match-card{display:flex;flex-direction:column;gap:var(--space-4)}.failed-match-section{padding:var(--space-4);background:var(--bg);border-radius:var(--radius-sm);border:1px solid var(--border)}.failed-match-label{font-size:var(--text-xs);color:var(--text-tertiary);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;margin-bottom:var(--space-2);display:flex;justify-content:space-between;align-items:center}.match-score{font-weight:600;font-size:var(--text-sm)}.failed-match-info{display:flex;flex-direction:column;gap:var(--space-2)}.failed-match-title{font-size:var(--text-md);font-weight:500;line-height:1.3}.failed-match-meta{display:flex;gap:var(--space-3);font-size:var(--text-sm);color:var(--text-secondary)}.failed-match-arrow{text-align:center;font-size:var(--text-xl);color:var(--text-tertiary);padding:var(--space-2) 0}.failed-match-explanation{padding:var(--space-3);background:var(--accent-soft);border-radius:var(--radius-sm)}.failed-match-none{padding:var(--space-4);text-align:center;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm)}.failed-match-actions{display:flex;gap:var(--space-2);justify-content:center;flex-wrap:wrap}@media(max-width:768px){.failed-match-card{gap:var(--space-3)}.failed-match-section{padding:var(--space-3)}.failed-match-actions{flex-direction:column}.failed-match-actions button{width:100%}}.search-result-card{display:flex;justify-content:space-between;align-items:center;gap:var(--space-3);padding:var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:var(--space-2);transition:all var(--transition-fast)}.search-result-card:hover{border-color:var(--accent);background:var(--accent-soft)}.search-result-info{flex:1;min-width:0}.search-result-title{font-size:var(--text-sm);font-weight:500;margin-bottom:var(--space-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-meta{display:flex;gap:var(--space-3);font-size:var(--text-xs);color:var(--text-secondary);font-family:var(--font-mono)}.search-result-actions{display:flex;gap:var(--space-2);flex-shrink:0}@media(max-width:768px){.search-result-card{flex-direction:column;align-items:flex-start}.search-result-actions{width:100%}.search-result-actions button,.search-result-actions a{flex:1}}.enrichment-empty{padding:var(--space-8);text-align:center;background:var(--accent-soft);border:1px solid var(--border);border-radius:var(--radius-md);margin-top:var(--space-6)}.enrichment-empty h3{font-size:var(--text-lg);margin-bottom:var(--space-3)}.enrichment-hint{font-size:var(--text-sm);color:var(--text-secondary);max-width:500px;margin:0 auto var(--space-4);line-height:1.5}.enrich-button{margin:var(--space-4) auto;padding:var(--space-3) var(--space-6);font-size:var(--text-md)}.enrichment-cost-hint{font-size:var(--text-xs);color:var(--text-tertiary);font-family:var(--font-mono);margin-top:var(--space-2)}.enrichment-loading{padding:var(--space-8);text-align:center}.enrichment-loading .spinner{width:32px;height:32px;margin:0 auto var(--space-4);border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.enrichment-loading-hint{font-size:var(--text-sm);color:var(--text-secondary);margin-top:var(--space-2)}.enrichment-content{margin-top:var(--space-6);padding-top:var(--space-6);border-top:1px solid var(--border)}.enrichment-content h3{font-size:var(--text-lg);margin-bottom:var(--space-6)}.enrichment-section{margin-bottom:var(--space-6)}.enrichment-section h4{font-size:var(--text-md);font-weight:600;margin-bottom:var(--space-3);color:var(--accent)}.enrichment-section p{font-size:var(--text-sm);line-height:1.6;color:var(--text-primary);margin-bottom:var(--space-3)}.enrichment-section p:last-child{margin-bottom:0}.enrichment-tracks,.enrichment-connections,.enrichment-key-albums{list-style:none;padding:0;margin:0}.enrichment-tracks li,.enrichment-connections li,.enrichment-key-albums li{padding:var(--space-3);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);margin-bottom:var(--space-2);font-size:var(--text-sm)}.enrichment-tracks li:last-child,.enrichment-connections li:last-child,.enrichment-key-albums li:last-child{margin-bottom:0}.track-position,.album-year{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-tertiary);margin-left:var(--space-2)}.track-reason,.album-reason{display:block;font-size:var(--text-xs);color:var(--text-secondary);margin-top:var(--space-1)}.enrichment-connections li{display:flex;flex-direction:column;gap:var(--space-1)}.enrichment-connections strong{font-weight:500}.enrichment-connections span{font-size:var(--text-xs);color:var(--text-secondary)}.similar-albums{display:grid;gap:var(--space-3)}.similar-album-card{padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.similar-album-card:hover{border-color:var(--accent);background:var(--accent-soft)}.similar-album-info{margin-bottom:var(--space-3)}.similar-album-title{display:block;font-weight:500;font-size:var(--text-sm);margin-bottom:var(--space-1)}.similar-album-artist{display:block;font-size:var(--text-xs);color:var(--text-secondary);margin-bottom:var(--space-2)}.similar-album-reason{font-size:var(--text-xs);color:var(--text-secondary);line-height:1.4;margin:0}.similar-album-links{display:flex;gap:var(--space-2);flex-wrap:wrap}.similar-link{font-size:var(--text-xs);font-family:var(--font-mono);padding:var(--space-1) var(--space-3);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);text-decoration:none;transition:all var(--transition-fast)}.similar-link:hover{border-color:var(--accent);color:var(--accent)}.enrichment-periods{display:grid;gap:var(--space-3)}.period-card{padding:var(--space-4);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm)}.period-card h5{font-size:var(--text-sm);font-weight:600;margin-bottom:var(--space-1)}.period-years{font-family:var(--font-mono);font-size:var(--text-xs);color:var(--text-tertiary);display:block;margin-bottom:var(--space-2)}.period-card p{font-size:var(--text-sm);color:var(--text-secondary);margin:0;line-height:1.5}.enrichment-meta{display:flex;align-items:center;gap:var(--space-3);padding-top:var(--space-4);margin-top:var(--space-6);border-top:1px solid var(--border);font-size:var(--text-xs);color:var(--text-tertiary);font-family:var(--font-mono)}.enrichment-date,.enrichment-version{flex-shrink:0}.enrichment-re-enrich{margin-left:auto}.button-small{padding:var(--space-1) var(--space-3);font-size:var(--text-xs)}@media(max-width:768px){.enrichment-empty{padding:var(--space-6)}.similar-album-links{width:100%}.similar-link{flex:1;text-align:center}.enrichment-meta{flex-wrap:wrap}.enrichment-re-enrich{width:100%;margin-left:0;margin-top:var(--space-2)}}.actions-accordion{position:relative;margin-left:auto}.actions-toggle{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-3);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--text-sm);font-family:var(--font-mono);color:var(--text-secondary);transition:all var(--transition-fast);white-space:nowrap}.actions-toggle:hover{border-color:var(--accent);color:var(--text-primary)}.actions-toggle.has-items{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.actions-toggle-icon{font-size:10px;transition:transform var(--transition-fast)}.actions-toggle.open .actions-toggle-icon{transform:rotate(90deg)}.actions-badge{background:var(--accent);color:#fff;font-size:var(--text-xs);padding:1px 6px;border-radius:var(--radius-full);font-weight:500}.actions-content{display:none;flex-wrap:wrap;gap:var(--space-2);padding:var(--space-3);position:absolute;top:100%;right:0;margin-top:var(--space-2);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);z-index:100;min-width:200px}.actions-content.open{display:flex;flex-direction:column}.actions-content .button{width:100%;justify-content:flex-start;text-align:left}@media(max-width:768px){.header-inner{flex-wrap:wrap;padding:var(--space-3) var(--space-4);gap:var(--space-3)}.logo{order:1}.settings-cog{order:2}.nav{order:3;width:100%;max-width:none;justify-content:space-between}.nav-item{flex:1;text-align:center;padding:var(--space-2);font-size:var(--text-xs)}#enrichment-indicator-container{order:4;width:100%;margin-top:var(--space-2)}.enrichment-indicator{width:100%;justify-content:center}.actions-accordion{position:relative;width:auto;margin-left:auto}.actions-content{position:absolute;right:0;width:max-content;min-width:220px}}.recommended-album-card{padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.recommended-album-card:hover{border-color:var(--accent);background:var(--accent-soft)}.recommended-album-card.in-collection{background:var(--bg);border-color:var(--success)}.recommended-album-card.in-collection:hover{background:#f0f8f0;transform:translateY(-2px);box-shadow:0 2px 8px #0000001a}.recommended-album-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-2);margin-bottom:var(--space-1)}.recommended-album-info{flex:1}.recommended-album-title{display:block;font-weight:500;font-size:var(--text-sm);line-height:1.3}.recommended-album-artist{display:block;font-size:var(--text-xs);color:var(--text-secondary);margin-bottom:var(--space-2)}.recommended-album-relationship{font-size:var(--text-xs);color:var(--text-secondary);line-height:1.4;margin:0 0 var(--space-2) 0;font-style:italic}.recommended-album-status{min-height:20px;margin-bottom:var(--space-2)}.in-collection-badge{display:inline-block;font-size:var(--text-xs);font-family:var(--font-mono);padding:var(--space-1) var(--space-2);background:var(--success);color:#fff;border-radius:var(--radius-sm);font-weight:500}.recommended-bookmark-btn{background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-1) var(--space-2);cursor:pointer;transition:all var(--transition-fast);font-size:var(--text-lg);line-height:1;color:var(--text-tertiary);flex-shrink:0}.recommended-bookmark-btn:hover{border-color:var(--accent);color:var(--accent);transform:scale(1.1)}.recommended-bookmark-btn.bookmarked{color:var(--accent);border-color:var(--accent);background:var(--accent-soft)}.recommended-bookmark-btn:disabled{cursor:not-allowed;opacity:.6}.bookmark-icon{display:block}.recommended-album-links{display:flex;gap:var(--space-2);flex-wrap:wrap;margin-top:var(--space-2)}@media(max-width:768px){.recommended-album-header{flex-direction:row;align-items:flex-start}.recommended-album-title{flex:1}.recommended-bookmark-btn{flex-shrink:0}.recommended-album-links{width:100%}.similar-link{flex:1;text-align:center}}.artist-modal-header{display:flex;gap:var(--space-4);margin-bottom:var(--space-6)}.artist-modal-image{width:120px;height:120px;border-radius:var(--radius-sm);background-size:cover;background-position:center;flex-shrink:0}.artist-modal-image-placeholder{background:var(--bg);border:1px solid var(--border);display:flex;align-items:center;justify-content:center}.artist-modal-info{flex:1;min-width:0}.artist-modal-name{font-size:var(--text-2xl);font-weight:600;margin:0 0 var(--space-2) 0;line-height:1.2}.artist-modal-stats{display:flex;gap:var(--space-2);font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--space-3)}.artist-modal-genres{display:flex;flex-wrap:wrap;gap:var(--space-2);margin-bottom:var(--space-2)}.artist-genre-tag{font-size:var(--text-xs);padding:var(--space-1) var(--space-2);background:var(--accent-soft);color:var(--accent);border-radius:var(--radius-sm)}.artist-modal-labels{font-size:var(--text-xs)}.artist-modal-section{margin-bottom:var(--space-6)}.artist-modal-section h3{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin-bottom:var(--space-4)}.artist-modal-links{display:flex;flex-direction:column;gap:var(--space-2)}.label-notable-artists{display:flex;flex-wrap:wrap;gap:var(--space-2)}.label-artist-tag{display:inline-block;padding:var(--space-1) var(--space-3);background:var(--accent-soft);color:var(--accent);border-radius:var(--radius-full);font-size:var(--text-sm);cursor:pointer;transition:all var(--transition-fast)}.label-artist-tag:hover{background:var(--accent);color:#fff}.view-in-network-btn{display:inline-flex;align-items:center;gap:var(--space-2);padding:var(--space-2) var(--space-4);background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);font-size:var(--text-sm);cursor:pointer;transition:all var(--transition-fast)}.view-in-network-btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft)}.view-in-network-btn svg{flex-shrink:0}.artist-discography-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:var(--space-3)}.artist-album-card{cursor:pointer;transition:all var(--transition-fast);border-radius:var(--radius-sm);overflow:hidden;background:var(--surface);border:1px solid var(--border)}.artist-album-card:hover{border-color:var(--accent);transform:translateY(-2px);box-shadow:var(--shadow-md)}.artist-album-cover{width:100%;aspect-ratio:1;object-fit:cover;display:block}.artist-album-cover-placeholder{width:100%;aspect-ratio:1;background:var(--bg);display:flex;align-items:center;justify-content:center}.artist-album-info{padding:var(--space-2)}.artist-album-title{font-size:var(--text-sm);font-weight:500;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.artist-album-year{font-size:var(--text-xs);color:var(--text-tertiary);margin-top:var(--space-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:768px){.artist-modal-header{flex-direction:column;align-items:center;text-align:center}.artist-modal-image{width:100px;height:100px}.artist-modal-stats{justify-content:center;flex-wrap:wrap}.artist-modal-genres{justify-content:center}.artist-discography-grid{grid-template-columns:repeat(2,1fr)}}.person-credits-list{display:flex;flex-direction:column;gap:var(--space-2)}.person-credit-card{display:flex;gap:var(--space-3);padding:var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.person-credit-card:hover{border-color:var(--accent);background:var(--accent-soft)}.person-credit-cover{width:60px;height:60px;object-fit:cover;border-radius:var(--radius-sm);flex-shrink:0}.person-credit-cover-placeholder{width:60px;height:60px;background:var(--bg);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0}.person-credit-info{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}.person-credit-title{font-size:var(--text-sm);font-weight:500;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person-credit-artist{font-size:var(--text-xs);color:var(--text-secondary);margin-top:var(--space-1);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.person-credit-roles{font-size:var(--text-xs);color:var(--accent);margin-top:var(--space-1);font-family:var(--font-mono)}#auth-container{display:flex;align-items:center;gap:var(--space-3)}.login-btn{font-family:var(--font-mono);font-size:var(--text-sm);padding:var(--space-2) var(--space-4);border:1px solid var(--accent);border-radius:var(--radius-sm);background:transparent;color:var(--accent);cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.login-btn:hover{background:var(--accent);color:#fff}.user-info{display:flex;align-items:center;gap:var(--space-2)}.user-avatar{width:28px;height:28px;border-radius:50%;object-fit:cover}.user-name{font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-primary)}.view-container{max-width:var(--max-width);margin:0 auto;padding:var(--space-8);min-height:calc(100vh - var(--header-height))}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-16) var(--space-8);min-height:400px}.empty-state h2{margin-bottom:var(--space-3);color:var(--text-primary)}.empty-state p{color:var(--text-secondary);max-width:400px;margin-bottom:var(--space-6)}.collection-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--space-6)}.collection-stats{display:flex;gap:var(--space-6);font-family:var(--font-mono);font-size:var(--text-sm);color:var(--text-secondary)}.discover-categories{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:var(--space-4);margin-top:var(--space-6)}.category-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-6);cursor:pointer;transition:all var(--transition-fast)}.category-card:hover{box-shadow:var(--shadow-md);border-color:var(--accent)}.category-card h3{margin-bottom:var(--space-2)}.category-card p{color:var(--text-secondary);font-size:var(--text-sm)}.bookmark-list{display:flex;flex-direction:column;gap:var(--space-3);margin-top:var(--space-6)}.bookmark-item{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-4);display:flex;align-items:center;gap:var(--space-4);transition:all var(--transition-fast)}.bookmark-item:hover{box-shadow:var(--shadow-sm)}.chat-container{display:flex;flex-direction:column;height:calc(100vh - var(--header-height) - var(--space-8) * 2);max-width:900px;margin:0 auto}.chat-messages{flex:1;overflow-y:auto;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)}.chat-message{padding:var(--space-4);border-radius:var(--radius-md);max-width:80%}.chat-message.user{background:var(--accent-soft);align-self:flex-end}.chat-message.assistant{background:var(--surface);border:1px solid var(--border);align-self:flex-start}.chat-input-container{border-top:1px solid var(--border);padding:var(--space-4);background:var(--surface)}.chat-input{width:100%;padding:var(--space-3);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-base);resize:vertical;min-height:60px}.skeleton{background:linear-gradient(90deg,var(--border) 0%,var(--bg) 50%,var(--border) 100%);background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite;border-radius:var(--radius-sm)}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-card{height:200px}.skeleton-title{height:24px;width:70%;margin-bottom:var(--space-2)}.skeleton-text{height:16px;width:100%;margin-bottom:var(--space-1)}@media(max-width:768px){.header{height:auto}.header-inner{padding:var(--space-3) var(--space-4);flex-direction:row;flex-wrap:wrap;gap:var(--space-3);align-items:center}.logo{order:1;flex:1}.header-right{order:2}.nav{order:3;width:100%;max-width:none;justify-content:space-between;padding:var(--space-1)}.nav-item{font-size:.625rem;padding:var(--space-2) var(--space-2);flex:1;text-align:center}#enrichment-indicator-container{order:4;width:100%}.view-container{padding:var(--space-4)}.modal{width:100%;max-width:100vw}}.discover-view{max-width:100%;padding:var(--space-8);min-height:calc(100vh - var(--header-height))}.discover-header{text-align:center;margin-bottom:var(--space-6)}.discover-header h1{margin-bottom:var(--space-2)}.discover-subtitle{font-size:var(--text-sm);color:var(--text-secondary)}.discover-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-16);gap:var(--space-4)}.discover-tabs{display:flex;gap:var(--space-2);justify-content:center;margin-bottom:var(--space-6);border-bottom:1px solid var(--border);padding-bottom:var(--space-1)}.discover-tab-btn{font-family:var(--font-mono);font-size:var(--text-sm);padding:var(--space-2) var(--space-4);border:none;background:transparent;color:var(--text-secondary);cursor:pointer;border-bottom:2px solid transparent;transition:all var(--transition-fast);position:relative;top:2px}.discover-tab-btn:hover{color:var(--text-primary)}.discover-tab-btn.active{color:var(--accent);border-bottom-color:var(--accent)}.discover-content{position:relative}.discover-tab-panel{display:none}.discover-tab-panel.active{display:block}.force-graph-container{width:100%;height:600px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);position:relative;overflow:hidden}.graph-controls{display:flex;align-items:center;justify-content:center;margin-bottom:var(--space-4);gap:var(--space-2)}.force-graph-svg{display:block}.force-graph-container canvas{touch-action:none}.force-graph-container .sigma-container{width:100%!important;height:100%!important}.sigma-loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:#fafaf8e6;display:flex;align-items:center;justify-content:center;z-index:10}.sigma-loading-overlay .spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}.node{cursor:pointer;transition:opacity .2s}.node.dimmed{opacity:.2}.node.path-highlighted{opacity:1}.node.path-dimmed{opacity:.15}.link{transition:opacity .2s,stroke-width .2s}.link.dimmed{opacity:.1}.link.highlighted{stroke-width:2;opacity:1}.link.path-highlighted{stroke-width:3;opacity:1;stroke:var(--accent)}.link.path-dimmed{opacity:.05}.graph-tooltip{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-3);box-shadow:0 4px 12px #0000001a;max-width:250px;z-index:1000}.tooltip-title{font-weight:500;font-size:var(--text-sm);margin-bottom:var(--space-1)}.tooltip-meta{font-size:var(--text-xs);color:var(--text-secondary);font-family:var(--font-mono)}.graph-legend{display:flex;justify-content:center;gap:var(--space-6);margin-top:var(--space-4);padding:var(--space-3);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-sm)}.legend-item{display:flex;align-items:center;gap:var(--space-2)}.legend-toggle{cursor:pointer;padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);transition:background-color .2s,opacity .2s}.legend-toggle:hover{background-color:var(--accent-soft)}.legend-toggle.legend-hidden{opacity:.4;text-decoration:line-through}.graph-hint{text-align:center;margin-top:var(--space-4);font-size:var(--text-xs);color:var(--text-tertiary);font-family:var(--font-mono)}.discover-stats{max-width:800px;margin:0 auto}.discover-stats h2{margin-bottom:var(--space-6);text-align:center}.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:var(--space-4);margin-bottom:var(--space-8)}.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-6);text-align:center}.stat-value{font-size:var(--text-2xl);font-weight:600;font-family:var(--font-mono);color:var(--accent);margin-bottom:var(--space-2)}.stat-label{font-size:var(--text-sm);color:var(--text-secondary)}.stats-section{margin-top:var(--space-8)}.stats-section h3{font-size:var(--text-lg);margin-bottom:var(--space-4)}.top-connectors-grid{display:grid;gap:var(--space-2)}.connector-item{display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.connector-item:hover{border-color:var(--accent);background:var(--accent-soft);transform:translate(4px)}.connector-rank{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:600;color:var(--text-tertiary);min-width:30px;text-align:center}.connector-info{flex:1}.connector-name{font-weight:500;font-size:var(--text-sm);margin-bottom:var(--space-1)}.connector-meta{font-size:var(--text-xs);color:var(--text-secondary);font-family:var(--font-mono)}@media(max-width:768px){.discover-view{padding:var(--space-4)}.discover-tabs{gap:var(--space-1)}.discover-tab-btn{font-size:var(--text-xs);padding:var(--space-2) var(--space-3)}.force-graph-container{height:400px}.graph-legend{flex-wrap:wrap;gap:var(--space-3)}.legend-item{font-size:var(--text-xs)}.stats-grid{grid-template-columns:repeat(2,1fr)}}.connection-finder{max-width:800px;margin:0 auto;padding:var(--space-8)}.connection-finder h2{font-size:var(--text-2xl);margin-bottom:var(--space-3)}.finder-hint{color:var(--text-secondary);font-size:var(--text-base);margin-bottom:var(--space-8)}.finder-inputs{display:flex;align-items:flex-end;gap:var(--space-4);margin-bottom:var(--space-6)}.finder-input-group{flex:1;display:flex;flex-direction:column;gap:var(--space-2)}.finder-input-group label{font-size:var(--text-sm);font-family:var(--font-mono);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.finder-input-group input{width:100%;padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-base);background:var(--surface);transition:all var(--transition-fast)}.finder-input-group input:focus{outline:none;border-color:var(--accent)}.finder-arrow{font-size:var(--text-2xl);color:var(--text-tertiary);padding-bottom:var(--space-3)}#find-connection-btn{width:100%;padding:var(--space-4);font-size:var(--text-base)}#connection-result{margin-top:var(--space-8)}.connection-error{padding:var(--space-4);background:var(--accent-soft);border:1px solid var(--accent);border-radius:var(--radius-md);color:var(--accent);text-align:center}.path-found{padding:var(--space-6);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md)}.path-distance{font-size:var(--text-xl);font-weight:600;color:var(--accent);text-align:center;margin-bottom:var(--space-6)}.path-steps{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3);justify-content:center;font-size:var(--text-base)}.path-person,.path-album{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);text-align:center}.path-person{background:var(--bg);border:1px solid var(--border);cursor:pointer;transition:all .2s}.path-person:hover{background:var(--text-primary);color:#fff;border-color:var(--text-primary)}.path-person:hover .path-person-role{color:#ffffffb3}.path-album{background:var(--accent-soft);border:1px solid var(--accent);cursor:pointer;transition:all .2s}.path-album:hover{background:var(--accent);color:#fff}.path-person-role,.path-album-artist{font-size:var(--text-xs);color:var(--text-secondary);font-family:var(--font-mono)}.path-album:hover .path-album-artist{color:#ffffffb3}.path-arrow{font-size:var(--text-xl);color:var(--text-tertiary)}.explore-later-header{margin-bottom:var(--space-8)}.bookmark-section{margin-bottom:var(--space-12)}.bookmark-section-title{font-size:var(--text-lg);margin-bottom:var(--space-6);padding-bottom:var(--space-3);border-bottom:1px solid var(--border)}.bookmark-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-4)}.bookmark-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-4);transition:all var(--transition-fast)}.bookmark-card:hover{border-color:var(--accent);box-shadow:0 2px 8px #0000000d}.bookmark-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-2);margin-bottom:var(--space-2)}.bookmark-card-title{font-size:var(--text-base);font-weight:600;flex:1}.bookmark-card-artist{font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--space-3)}.bookmark-card-relationship{font-size:var(--text-sm);color:var(--accent);background:var(--accent-soft);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);margin-bottom:var(--space-3);font-style:italic}.bookmark-card-context{font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:var(--space-4);line-height:1.5}.bookmark-card-footer{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--border)}.bookmark-card-date{font-size:var(--text-xs);color:var(--text-tertiary);font-family:var(--font-mono)}.bookmark-priority{font-size:var(--text-xs);color:var(--accent);background:var(--accent-soft);padding:var(--space-1) var(--space-2);border-radius:var(--radius-sm);font-family:var(--font-mono)}.bookmark-card-actions{display:flex;flex-wrap:wrap;gap:var(--space-2)}.bookmark-card-actions .button{flex:1;min-width:120px}.bookmark-remove{background:none;border:none;color:var(--text-secondary);font-size:20px;cursor:pointer;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all var(--transition-fast);flex-shrink:0}.bookmark-remove:hover{background:var(--bg);color:var(--error)}.bookmark-list{display:flex;flex-direction:column;gap:var(--space-2)}.bookmark-item{display:flex;justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);transition:all var(--transition-fast)}.bookmark-item:hover{border-color:var(--accent)}.bookmark-item-content{flex:1}.bookmark-item-type{font-size:var(--text-sm);font-family:var(--font-mono);color:var(--text-tertiary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:var(--space-1)}.bookmark-item-context{font-size:var(--text-base);color:var(--text-primary);margin-bottom:var(--space-2)}.bookmark-item-date{font-size:var(--text-xs);color:var(--text-tertiary);font-family:var(--font-mono)}@media(max-width:768px){.finder-inputs{flex-direction:column;align-items:stretch}.finder-arrow{transform:rotate(90deg);padding-bottom:0;align-self:center}.path-steps{flex-direction:column;gap:var(--space-2)}.path-arrow{transform:rotate(90deg)}.bookmark-grid{grid-template-columns:1fr}.bookmark-card-actions{flex-direction:column}}.chat-view{display:flex;height:calc(100vh - var(--header-height));overflow:hidden}.chat-sidebar{width:280px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0}.chat-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-4);border-bottom:1px solid var(--border)}.chat-sidebar-header h3{font-size:var(--text-sm);font-weight:600;margin:0}.chat-history{flex:1;overflow-y:auto;padding:var(--space-2)}.chat-history-loading,.chat-history-empty{padding:var(--space-4);text-align:center;color:var(--text-tertiary);font-size:var(--text-sm)}.chat-history-item{display:flex;align-items:center;gap:var(--space-2);padding:var(--space-3);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);margin-bottom:var(--space-1)}.chat-history-item:hover{background:var(--bg)}.chat-history-item.active{background:var(--accent-soft)}.chat-history-item-content{flex:1;min-width:0}.chat-history-item-title{font-size:var(--text-sm);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-history-item-date{font-size:var(--text-xs);color:var(--text-tertiary);margin-top:var(--space-1)}.chat-history-item-delete{opacity:0;background:none;border:none;color:var(--text-tertiary);cursor:pointer;padding:var(--space-1);font-size:var(--text-lg);line-height:1;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.chat-history-item:hover .chat-history-item-delete{opacity:1}.chat-history-item-delete:hover{color:var(--error);background:#f443361a}.chat-sidebar-footer{padding:var(--space-3) var(--space-4);border-top:1px solid var(--border);font-size:var(--text-xs)}.chat-usage-summary{display:flex;justify-content:space-between;gap:var(--space-2)}.chat-main{flex:1;display:flex;flex-direction:column;min-width:0}.chat-container{flex:1;display:flex;flex-direction:column;max-width:800px;margin:0 auto;width:100%;padding:var(--space-4)}.chat-messages{flex:1;overflow-y:auto;padding:var(--space-4) 0}.chat-loading{text-align:center;color:var(--text-tertiary);padding:var(--space-8)}.chat-welcome{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-8);height:100%}.chat-welcome h2{margin-bottom:var(--space-3);color:var(--text-primary)}.chat-welcome p{color:var(--text-secondary);max-width:400px;margin-bottom:var(--space-6)}.chat-suggestions{display:flex;flex-direction:column;gap:var(--space-2);width:100%;max-width:400px}.chat-suggestion{padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;text-align:left;font-size:var(--text-sm);color:var(--text-secondary);transition:all var(--transition-fast)}.chat-suggestion:hover{border-color:var(--accent);color:var(--text-primary);background:var(--accent-soft)}.chat-message{margin-bottom:var(--space-4);max-width:85%}.chat-message-user{margin-left:auto}.chat-message-assistant{margin-right:auto}.chat-message-content{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-base);line-height:1.6}.chat-message-user .chat-message-content{background:var(--accent);color:#fff;border-bottom-right-radius:var(--radius-sm)}.chat-message-assistant .chat-message-content{background:var(--surface);border:1px solid var(--border);border-bottom-left-radius:var(--radius-sm)}.chat-message-assistant .chat-message-content p{margin:0 0 var(--space-3) 0}.chat-message-assistant .chat-message-content p:last-child{margin-bottom:0}.chat-message-assistant .chat-message-content ul{margin:var(--space-2) 0;padding-left:var(--space-4)}.chat-message-assistant .chat-message-content li{margin-bottom:var(--space-1)}.chat-message-meta{font-size:var(--text-xs);color:var(--text-tertiary);margin-top:var(--space-1);padding:0 var(--space-2)}.chat-message-user .chat-message-meta{text-align:right}.chat-message-error .chat-message-content{background:#f443361a;border:1px solid var(--error);color:var(--error)}.chat-album-mention{background:var(--accent-soft);color:var(--accent);padding:0 var(--space-1);border-radius:var(--radius-sm);font-weight:500}.chat-typing{display:flex;gap:var(--space-1);padding:var(--space-3) var(--space-4);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);border-bottom-left-radius:var(--radius-sm);width:fit-content;margin-bottom:var(--space-4)}.chat-typing span{width:8px;height:8px;background:var(--text-tertiary);border-radius:50%;animation:typing-bounce 1.4s infinite both}.chat-typing span:nth-child(1){animation-delay:0s}.chat-typing span:nth-child(2){animation-delay:.2s}.chat-typing span:nth-child(3){animation-delay:.4s}@keyframes typing-bounce{0%,80%,to{transform:scale(.8);opacity:.5}40%{transform:scale(1);opacity:1}}.chat-input-container{display:flex;gap:var(--space-2);padding:var(--space-4) 0;border-top:1px solid var(--border)}.chat-input{flex:1;padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);font-family:var(--font-sans);font-size:var(--text-base);resize:none;min-height:44px;max-height:150px;line-height:1.5;transition:border-color var(--transition-fast)}.chat-input:focus{outline:none;border-color:var(--accent)}.chat-input:disabled{background:var(--bg);color:var(--text-tertiary)}.chat-send-btn{width:44px;height:44px;background:var(--accent);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast);flex-shrink:0}.chat-send-btn:hover:not(:disabled){background:var(--accent-hover, #e04e00);transform:translateY(-1px)}.chat-send-btn:disabled{opacity:.5;cursor:not-allowed}.chat-sidebar-toggle{display:none;position:fixed;bottom:var(--space-4);left:var(--space-4);width:48px;height:48px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-full);box-shadow:var(--shadow-lg);cursor:pointer;align-items:center;justify-content:center;z-index:100;color:var(--text-secondary)}.chat-sidebar-toggle:hover{color:var(--text-primary);border-color:var(--accent)}@media(max-width:768px){.chat-sidebar{position:fixed;top:var(--header-height);left:0;bottom:0;width:280px;transform:translate(-100%);transition:transform var(--transition-normal);z-index:200;box-shadow:var(--shadow-lg)}.chat-sidebar.open{transform:translate(0)}.chat-sidebar-toggle{display:flex}.chat-container{padding:var(--space-3)}.chat-message{max-width:95%}.chat-welcome{padding:var(--space-4)}.chat-suggestions{max-width:100%}}.insights-container{padding:var(--space-4);max-width:900px;margin:0 auto}.insights-loading,.insights-error{text-align:center;padding:var(--space-8);color:var(--text-tertiary)}.insights-empty{text-align:center;padding:var(--space-12);color:var(--text-secondary)}.insights-section{margin-bottom:var(--space-8)}.insights-section h3{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.08em;color:var(--text-tertiary);margin-bottom:var(--space-4)}.insights-overview-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:var(--space-3)}.insight-stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:var(--space-4);text-align:center}.insight-stat-value{font-size:var(--text-2xl);font-weight:600;font-family:var(--font-mono);color:var(--text-primary)}.insight-stat-label{font-size:var(--text-xs);color:var(--text-tertiary);margin-top:var(--space-1)}.decade-chart{display:flex;flex-direction:column;gap:var(--space-2)}.decade-row{display:flex;align-items:center;gap:var(--space-3)}.decade-label{width:50px;font-size:var(--text-sm);font-family:var(--font-mono);color:var(--text-secondary);text-align:right}.decade-bar-container{flex:1;height:24px;background:var(--bg);border-radius:var(--radius-sm);overflow:hidden}.decade-bar{height:100%;background:var(--accent);border-radius:var(--radius-sm);transition:width var(--transition-normal)}.decade-count{width:40px;font-size:var(--text-sm);font-family:var(--font-mono);color:var(--text-secondary)}.genre-bars{display:flex;flex-direction:column;gap:var(--space-2)}.bar-row{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-1) 0;border-radius:var(--radius-sm);transition:background var(--transition-fast)}.bar-row:hover{background:var(--accent-soft)}.bar-label{width:140px;font-size:var(--text-sm);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.bar-container{flex:1;height:20px;background:var(--bg);border-radius:var(--radius-sm);overflow:hidden}.bar-fill{height:100%;background:linear-gradient(90deg,var(--accent-soft),var(--accent));border-radius:var(--radius-sm);transition:width var(--transition-normal)}.bar-count{width:40px;font-size:var(--text-sm);font-family:var(--font-mono);color:var(--text-secondary);text-align:right}.ranking-list{display:flex;flex-direction:column}.ranking-item{display:flex;align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);transition:background var(--transition-fast)}.ranking-item:hover{background:var(--accent-soft)}.ranking-position{width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);font-weight:600;font-family:var(--font-mono);color:var(--text-tertiary);background:var(--bg);border-radius:var(--radius-sm)}.ranking-item:nth-child(1) .ranking-position,.ranking-item:nth-child(2) .ranking-position,.ranking-item:nth-child(3) .ranking-position{background:var(--accent-soft);color:var(--accent)}.ranking-name{flex:1;font-size:var(--text-sm);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ranking-count{font-size:var(--text-sm);font-family:var(--font-mono);color:var(--text-secondary)}.enrichment-status-grid{display:flex;flex-direction:column;gap:var(--space-4)}.status-item{display:flex;flex-direction:column;gap:var(--space-2)}.status-bar{height:8px;background:var(--bg);border-radius:var(--radius-full);overflow:hidden}.status-fill{height:100%;background:var(--success);border-radius:var(--radius-full);transition:width var(--transition-normal)}.status-fill-accent{background:var(--accent)}.status-info{display:flex;justify-content:space-between;font-size:var(--text-sm)}.status-label{color:var(--text-secondary)}.status-value{font-family:var(--font-mono);color:var(--text-primary)}.growth-chart{padding:var(--space-4) 0}.growth-bars{display:flex;align-items:flex-end;gap:var(--space-2);height:150px}.growth-bar-group{flex:1;display:flex;flex-direction:column;align-items:center;height:100%}.growth-bar-wrapper{flex:1;width:100%;display:flex;align-items:flex-end}.growth-bar{width:100%;background:var(--accent);border-radius:var(--radius-sm) var(--radius-sm) 0 0;min-height:4px;transition:height var(--transition-normal)}.growth-label{font-size:var(--text-xs);color:var(--text-tertiary);margin-top:var(--space-2)}.growth-caption{text-align:center;font-size:var(--text-xs);color:var(--text-tertiary);margin-top:var(--space-4)}@media(max-width:768px){.insights-container{padding:var(--space-3)}.insights-overview-grid{grid-template-columns:repeat(2,1fr)}.bar-label{width:100px;font-size:var(--text-xs)}.decade-label{width:40px;font-size:var(--text-xs)}.growth-bars{height:120px}}
