.songs-table{--songs-grid:minmax(0, 1fr) 140px 80px var(--control-lg);flex-direction:column;display:flex}.songs-table.is-setlist-view{--songs-grid:minmax(0, 1fr) 140px 80px minmax(10.5rem, max-content)}.songs-header-row{grid-template-columns:var(--songs-grid);min-height:30px;padding:.35rem var(--row-pad-x);margin-inline:calc(-1 * var(--row-pad-x));color:var(--text-muted);background:0 0;align-items:center;gap:.5rem;font-size:.82rem;font-weight:600;display:grid;position:relative}.songs-header-row .header-sortable{width:100%;color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;text-align:left;cursor:pointer;background:0 0;border:none;border-radius:4px;align-items:center;gap:.35rem;margin:0;padding:0;transition:color .15s,background-color .15s;display:inline-flex}.songs-header-row:before{content:"";left:var(--row-pad-x);right:var(--row-pad-x);border-top:var(--hairline);pointer-events:none;position:absolute;bottom:0}.songs-header-row .header-title{min-width:0}.songs-header-row .header-sortable:hover{color:var(--text-primary);background:var(--color-overlay-strong);outline:none}.songs-header-row .header-sortable:focus-visible{color:var(--text-primary);background:var(--color-overlay-strong);outline:none}.songs-header-row .header-sortable.is-active{color:var(--accent-primary)}.songs-header-row .header-sortable .sort-indicator{font-size:var(--font-size-xxs);line-height:1}.songs-list{flex-direction:column;display:flex}.song-row{grid-template-columns:var(--songs-grid);padding:var(--row-pad-y) var(--row-pad-x);margin-inline:calc(-1 * var(--row-pad-x));border-radius:var(--row-radius);cursor:pointer;min-height:var(--songs-row-height);align-items:center;gap:.5rem;transition:background-color .15s,transform .18s;display:grid;position:relative}.song-row:before{content:"";left:var(--row-pad-x);right:var(--row-pad-x);border-top:var(--hairline-soft);pointer-events:none;position:absolute;bottom:0}.song-row.setlist-song-row .song-actions-cell{justify-content:flex-end}.song-readiness-cell{justify-content:flex-end;align-items:center;gap:.3rem;min-width:0;display:flex}.song-row.is-reorderable{cursor:grab;will-change:transform}.song-row.is-dragging,.song-row.is-reorderable:active{cursor:grabbing}.song-row.is-dragging{z-index:2;background:var(--surface-3);box-shadow:var(--float-shadow);will-change:transform;transition:none}@media (prefers-reduced-motion:reduce){.song-row{transition:none}}.song-row:hover{background:var(--interactive-hover)}.song-row.section-marker-row{grid-template-columns:1fr var(--control-lg);cursor:default;background:0 0}.song-row.section-marker-row.is-reorderable{cursor:grab}.section-marker-label{font-size:var(--font-size-xs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.section-marker-actions{justify-content:flex-end;align-items:center;gap:.25rem;display:flex}.song-main-link{min-width:0;color:inherit;flex:auto;text-decoration:none;display:flex}.song-main-link:after{content:"";position:absolute;inset:0}.song-main-link:hover{color:inherit}.song-main-link:focus-visible{outline-offset:-2px}.song-drag-handle:focus-visible{outline-offset:-2px}.song-title-cell{font-size:var(--songs-font-title);color:var(--text-primary);text-overflow:ellipsis;white-space:nowrap;align-items:center;gap:.35rem;min-width:0;font-weight:400;display:flex;overflow:hidden}.song-title-text{text-overflow:ellipsis;white-space:nowrap;flex:auto;min-width:0;overflow:hidden}.song-owner-chip{text-overflow:ellipsis;flex:none;max-width:10rem;display:block;overflow:hidden}.song-drag-handle{width:1.2rem;height:1.2rem;font-size:var(--font-size-md);color:var(--text-muted);-webkit-user-select:none;user-select:none;visibility:hidden;touch-action:none;z-index:1;border-radius:4px;flex:none;justify-content:center;align-items:center;display:inline-flex;position:relative}.song-row.is-reorderable .song-drag-handle{visibility:visible;cursor:grab}.song-row.is-dragging .song-drag-handle{cursor:grabbing}.song-artist-cell{font-size:var(--songs-font-meta);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.empty-field{opacity:.5}.song-date-cell{font-size:var(--songs-font-meta);color:var(--text-muted);text-align:right}.songs-header-row .header-date.header-sortable{justify-content:flex-end}.songs-header-row .header-date:not(.header-sortable),.songs-header-row .header-actions{text-align:right}.header-status-label{white-space:nowrap}.song-actions-cell{opacity:1;z-index:1;justify-content:center;align-items:center;gap:.35rem;display:flex;position:relative}.song-actions-cell.visible{opacity:1}.song-row.is-dragging .song-actions-cell{opacity:0}@media (hover:hover) and (pointer:fine){.song-row:not(.setlist-song-row) .delete-btn{opacity:0;transition:opacity var(--transition-fast)}.song-row:not(.setlist-song-row):hover .delete-btn{opacity:1}.song-row:not(.setlist-song-row):focus-within .delete-btn{opacity:1}}.song-row.is-drop-target:after{content:"";background:var(--accent-primary);opacity:.8;border-radius:2px;height:3px;position:absolute;bottom:-3px;left:0;right:0}.songs-drop-tail{background:0 0;border-radius:2px;height:4px;transition:background .15s}.songs-drop-tail.is-active{background:var(--accent-primary);opacity:.8}.action-btn{cursor:pointer;font-size:var(--font-size-md);width:var(--icon-xl);height:var(--icon-xl);background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;padding:.2rem;transition:all .2s;display:flex}.action-btn.setlist-toggle{width:var(--icon-xl);height:var(--icon-xl);color:var(--text-muted);background:0 0;border:none;border-radius:3px}.action-btn.setlist-toggle.is-add:hover:not(:disabled){background:rgba(var(--accent-primary-rgb), .1);color:var(--accent-primary)}.action-btn.setlist-toggle.is-remove{color:var(--color-error)}.action-btn.setlist-toggle.is-remove:hover:not(:disabled){background:var(--color-error-alpha);color:var(--color-error)}.action-btn.setlist-toggle:disabled{opacity:.6;cursor:not-allowed}.setlist-toggle-icon{width:18px;height:18px;display:block}.delete-btn{color:var(--text-muted)}.delete-btn:hover{background:var(--color-error-alpha);color:var(--color-error);transform:scale(1.1)}