:root{--primary-color: #ffd32a;--primary-hover: #ffc048;--secondary-color: #0fbcf9;--accent-color: #ff5e57;--background-color: #1e272e;--surface-color: #2f3640;--text-primary: #f1f2f6;--text-secondary: #d2dae2;--border-color: #4b6584;--shadow-sm: 0 1px 3px rgba(0,0,0,.3);--shadow-md: 0 4px 6px rgba(0,0,0,.4);--shadow-lg: 0 10px 20px rgba(0,0,0,.5);--radius-md: 12px;--font-family: "Outfit", "Inter", sans-serif}*,*:before,*:after{box-sizing:border-box}body{margin:0;padding:0;font-family:var(--font-family);background-color:var(--background-color);color:var(--text-primary);line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}button{font-family:inherit}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.fade-in{animation:fadeIn .3s ease-out forwards}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:var(--background-color)}::-webkit-scrollbar-thumb{background:#cbd5e0;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a0aec0}.empty-state-box{text-align:center;padding:30px;background-color:var(--surface-color);border-radius:8px;color:var(--text-secondary);font-style:italic;border:1px dashed var(--border-color)}.error-state{text-align:center;padding:30px;color:var(--accent-color);background-color:var(--surface-color);border-radius:8px;border:1px solid var(--accent-color)}.modal-backdrop{position:fixed;inset:0;background-color:#000000b3;display:flex;justify-content:center;align-items:center;z-index:1000;animation:fadeIn .2s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{background-color:var(--surface-color);border-radius:var(--radius-md);width:90%;max-width:400px;box-shadow:0 10px 40px #00000080;animation:slideUp .3s ease-out}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid var(--border-color)}.modal-header h3{margin:0;color:var(--text-primary);font-size:1.2rem}.modal-close-btn{background:none;border:none;font-size:1.5rem;color:var(--text-secondary);cursor:pointer;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:4px;transition:all .2s}.modal-close-btn:hover{background-color:var(--border-color);color:var(--text-primary)}.modal-body{padding:20px}.modal-message{margin:0 0 15px;color:var(--text-primary);font-size:.95rem}.password-input{width:100%;padding:12px;border:2px solid var(--border-color);border-radius:8px;background-color:var(--background-color);color:var(--text-primary);font-size:1rem;transition:all .2s;box-sizing:border-box}.password-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #ffd32a33}.error-message{margin:10px 0 0;color:var(--accent-color);font-size:.9rem;animation:shake .3s}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:20px;border-top:1px solid var(--border-color)}.modal-cancel-btn,.modal-confirm-btn{padding:10px 20px;border:none;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s}.modal-cancel-btn{background-color:var(--background-color);color:var(--text-primary);border:2px solid var(--border-color)}.modal-cancel-btn:hover{background-color:var(--border-color)}.modal-confirm-btn{background-color:var(--accent-color);color:#fff}.modal-confirm-btn:hover{background-color:#e85e57;transform:translateY(-1px);box-shadow:0 4px 12px #ff5e574d}.song-list{padding:0;margin:0}.song-list-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;border-bottom:2px solid var(--border-color);padding-bottom:10px}.song-list h2{margin:0;color:var(--primary-color);font-size:1.25rem;font-weight:700}.song-list-ul{list-style:none;padding:0;margin:0 0 15px}.song-item{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;margin-bottom:8px;background-color:var(--surface-color);border:1px solid var(--border-color);border-radius:8px;transition:all .2s ease}.song-item:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a;border-color:var(--primary-color)}.song-title-span{flex:1;font-weight:600;color:var(--text-primary);cursor:pointer;display:flex;flex-direction:column}.song-artist-span{font-weight:400;color:var(--text-secondary);font-size:.85em;margin-top:2px}.delete-btn{background-color:transparent;color:var(--text-secondary);border:none;padding:4px 8px;border-radius:4px;cursor:pointer;font-size:1.2rem;transition:all .2s;opacity:.6;margin-left:10px;line-height:1}.delete-btn:hover{color:#ff6b6b;opacity:1;background-color:#ff6b6b1a}.add-song-btn{width:100%;padding:12px;background-color:transparent;border:2px dashed var(--border-color);border-radius:8px;color:var(--text-secondary);font-weight:600;font-size:.95rem;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:6px}.add-song-btn:hover{border-color:var(--primary-color);color:var(--primary-color);background-color:#ffd32a0d}.song-detail{animation:fadeIn .3s ease-out}.song-detail h2{margin:0 0 5px;font-size:2rem;color:var(--primary-color)}.song-detail h3{margin:0 0 20px;font-size:1.2rem;color:var(--text-secondary);font-weight:400}.song-info{display:flex;flex-wrap:wrap;gap:20px;margin-bottom:30px;padding:15px;background-color:var(--background-color);border-radius:8px}.song-info a{color:var(--secondary-color);text-decoration:none;word-break:break-all}.song-info a:hover{text-decoration:underline}.song-info p{margin:0;font-size:.95rem;color:var(--text-primary)}.song-info strong{color:var(--primary-color)}.youtube-embed{margin:16px 0}.youtube-embed h4{margin-bottom:10px;font-size:1.1rem;color:var(--text-primary);border-left:4px solid var(--accent-color);padding-left:10px}.youtube-embed iframe{width:100%;aspect-ratio:16 / 9;border:none;border-radius:8px}.song-chords,.song-memo{margin-bottom:30px}.song-chords h4,.song-memo h4{margin-bottom:10px;font-size:1.1rem;color:var(--text-primary);border-left:4px solid var(--accent-color);padding-left:10px}.song-chords pre,.song-memo pre{background-color:var(--background-color);padding:20px;border-radius:8px;white-space:pre-wrap;font-family:inherit;line-height:1.8;color:var(--text-primary);border:1px solid var(--border-color);max-height:400px;overflow-y:auto}.chords-header,.memo-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}.chords-header h4,.memo-header h4{margin-bottom:0}.chords-edit-btn,.memo-edit-btn{background:none;border:1px solid var(--border-color);color:var(--text-secondary);padding:4px 12px;border-radius:6px;cursor:pointer;font-size:.85rem;transition:all .2s}.chords-edit-btn:hover,.memo-edit-btn:hover{background-color:var(--primary-color);color:#1e272e;border-color:var(--primary-color)}.chords-editor,.memo-editor{display:flex;flex-direction:column;gap:10px}.chords-textarea,.memo-textarea{width:100%;min-height:150px;padding:16px;background-color:var(--background-color);color:var(--text-primary);border:2px solid var(--secondary-color);border-radius:8px;font-family:inherit;font-size:.95rem;line-height:1.8;resize:vertical;box-sizing:border-box}.chords-textarea:focus,.memo-textarea:focus{outline:none;border-color:var(--primary-color)}.chords-actions,.memo-actions{display:flex;gap:8px}.chords-save-btn,.memo-save-btn{padding:8px 20px;background-color:var(--secondary-color);color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:600;transition:background-color .2s}.chords-save-btn:hover:not(:disabled),.memo-save-btn:hover:not(:disabled){background-color:var(--primary-color);color:#1e272e}.chords-save-btn:disabled,.memo-save-btn:disabled{opacity:.6;cursor:not-allowed}.chords-cancel-btn,.memo-cancel-btn{padding:8px 20px;background-color:transparent;color:var(--text-secondary);border:1px solid var(--border-color);border-radius:6px;cursor:pointer;font-weight:600;transition:all .2s}.chords-cancel-btn:hover:not(:disabled),.memo-cancel-btn:hover:not(:disabled){background-color:var(--border-color);color:var(--text-primary)}pre.memo-empty,pre.content-empty{color:var(--text-secondary);font-style:italic}.song-detail-placeholder{display:flex;align-items:center;justify-content:center;height:50vh;color:var(--text-secondary);font-size:1.2rem}.edit-btn{padding:10px 24px;background-color:var(--secondary-color);color:#fff;border:none;border-radius:8px;cursor:pointer;font-weight:600;transition:background-color .2s}.edit-btn:hover{background-color:var(--primary-color)}.mobile-back-btn{display:none;background:none;border:none;color:var(--text-secondary);font-size:1.1rem;margin-bottom:20px;cursor:pointer;padding:8px 0;align-items:center;gap:8px;font-weight:600}.mobile-back-btn:hover{color:var(--primary-color)}.song-media .inline-player-wrapper{position:relative;margin-bottom:16px;background:var(--background-color);border:1px solid var(--border-color);border-radius:8px;padding:16px}.song-media .close-player-btn{position:absolute;top:8px;right:8px;background:none;border:none;color:var(--text-secondary);font-size:1.4rem;cursor:pointer;line-height:1;padding:4px 8px;border-radius:4px;transition:all .2s}.song-media .close-player-btn:hover{color:var(--text-primary);background-color:var(--surface-color)}@media(max-width:768px){.mobile-back-btn{display:flex}.song-detail h2{font-size:1.4rem}.song-detail h3{font-size:1rem}.song-info{flex-direction:column;gap:10px;padding:12px}.song-chords pre,.song-memo pre{padding:12px;font-size:.9rem;max-height:300px}}.media-list{list-style:none;padding:0;margin:0}.media-item{display:flex;align-items:center;padding:12px;background-color:var(--surface-color);border:1px solid var(--border-color);border-radius:8px;margin-bottom:10px}.media-icon{font-size:1.5rem;margin-right:15px}.media-name{flex:1;font-weight:500;color:var(--text-primary)}.play-btn{background-color:var(--secondary-color);color:#fff;border:none;padding:6px 12px;border-radius:6px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.play-btn:hover{background-color:var(--primary-color);color:#1e272e}.no-media{color:var(--text-secondary);font-style:italic}.media-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px;border-bottom:2px solid var(--border-color);padding-bottom:10px}.song-media h4{margin:0;border:none;padding:0;font-size:1.2rem}.upload-btn{background-color:var(--primary-color);color:#1e272e;padding:8px 16px;border-radius:6px;font-size:.9rem;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;transition:all .2s}.upload-btn:hover{background-color:var(--primary-hover);transform:translateY(-1px)}.empty-media{text-align:center;padding:30px;background-color:var(--background-color);border-radius:8px;color:var(--text-secondary);border:1px dashed var(--border-color)}.upload-instruction{font-size:.9rem;color:var(--text-secondary);margin-top:10px;font-style:italic}.media-info{flex:1;display:flex;flex-direction:column}.media-size{font-size:.85rem;color:var(--text-secondary);margin-top:2px;display:flex;align-items:center;gap:8px}.comment-count-badge{font-size:.8rem;color:var(--secondary-color)}.detail-actions{margin-top:30px;border-top:1px solid var(--border-color);padding-top:20px;text-align:right}.media-name{cursor:pointer;transition:color .2s}.media-name:hover{color:var(--primary-color)}.rename-hint{font-size:.8rem;opacity:.5;margin-left:5px;visibility:hidden}.media-name:hover .rename-hint{visibility:visible}.rename-input-group{display:flex;align-items:center;gap:5px}.rename-input{flex:1;padding:6px 10px;border:2px solid var(--primary-color);border-radius:4px;background-color:var(--background-color);color:var(--text-primary);font-size:.95rem}.save-btn,.cancel-btn{padding:6px 10px;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;transition:transform .1s}.save-btn:active,.cancel-btn:active{transform:scale(.95)}.save-btn{background-color:var(--primary-color);color:#1e272e}.cancel-btn{background-color:#ff4757;color:#fff}@media(max-width:768px){.media-item{flex-wrap:wrap;gap:8px}.media-header{flex-direction:column;align-items:flex-start;gap:10px}.rename-input-group{flex-wrap:wrap}.media-name{word-break:break-all}}.file-upload-container{margin:20px 0}.drop-zone{border:2px dashed var(--border-color);border-radius:var(--radius-md);padding:40px 20px;text-align:center;background-color:var(--background-color);transition:all .3s ease;cursor:pointer;position:relative}.drop-zone:hover{border-color:var(--primary-color);background-color:var(--surface-color)}.drop-zone.dragging{border-color:var(--primary-color);background-color:var(--surface-color);transform:scale(1.02);box-shadow:0 0 20px #ffd32a4d}.drop-zone-content{pointer-events:none}.upload-icon{font-size:3rem;margin-bottom:15px;animation:bounce 2s infinite}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.upload-text{margin:10px 0;font-size:1.1rem;font-weight:600;color:var(--text-primary)}.upload-hint{margin:5px 0;font-size:.9rem;color:var(--text-secondary)}.file-input-hidden{position:absolute;top:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.upload-progress-list{margin-top:20px;padding:15px;background-color:var(--surface-color);border-radius:var(--radius-md)}.progress-item{display:flex;align-items:center;gap:15px;margin-bottom:12px;padding:10px;background-color:var(--background-color);border-radius:8px}.progress-item:last-child{margin-bottom:0}.progress-filename{flex-shrink:0;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9rem;color:var(--text-primary)}.progress-bar{flex:1;height:8px;background-color:var(--border-color);border-radius:4px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--primary-color),var(--secondary-color));transition:width .3s ease;border-radius:4px}.progress-percent{flex-shrink:0;width:45px;text-align:right;font-size:.9rem;font-weight:600;color:var(--primary-color)}@media(max-width:768px){.drop-zone{padding:24px 16px}.upload-icon{font-size:2rem}.upload-text{font-size:.95rem}.progress-item{gap:10px;padding:8px}.progress-filename{max-width:100px;font-size:.8rem}}.media-player{background-color:var(--surface-color);border-radius:var(--radius-md);padding:15px;margin-bottom:15px;box-shadow:var(--shadow-sm)}.player-header{display:flex;align-items:center;gap:10px;margin-bottom:15px;padding-bottom:10px;border-bottom:1px solid var(--border-color)}.player-icon{font-size:1.5rem}.player-title{font-weight:600;color:var(--text-primary);flex:1}.player-content{width:100%}.video-player{width:100%;max-height:400px;border-radius:8px;background-color:#000}.audio-player{display:flex;flex-direction:column;align-items:center;padding:20px;background-color:var(--background-color);border-radius:8px}.audio-player audio{width:100%;margin-bottom:15px}.audio-controls{display:flex;gap:10px;margin-top:10px}.play-control{background-color:var(--primary-color);color:#1e272e;border:none;padding:12px 24px;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;margin-top:15px}.play-control:hover{background-color:var(--primary-hover);transform:scale(1.05)}.no-preview{text-align:center;padding:40px;color:var(--text-secondary);background-color:var(--background-color);border-radius:8px}.image-preview{padding:10px;text-align:center}.preview-image{max-width:100%;max-height:500px;border-radius:8px;box-shadow:0 2px 8px #0003}.document-preview{padding:30px;text-align:center}.document-link{display:inline-block;padding:12px 24px;background-color:var(--primary-color);color:var(--background-color);text-decoration:none;border-radius:8px;font-weight:600;transition:all .2s}.document-link:hover{background-color:var(--secondary-color);transform:translateY(-2px);box-shadow:0 4px 12px #ffd32a4d}@media(max-width:768px){.media-player{padding:10px}.video-player{max-height:250px}.audio-player{padding:12px}.player-title{font-size:.9rem;word-break:break-all}}.comment-section{margin-top:16px;border-top:1px solid var(--border-color);padding-top:16px}.comment-section-title{margin:0 0 12px;font-size:.95rem;color:var(--text-primary)}.comment-loading,.comment-empty{color:var(--text-secondary);font-size:.85rem;margin:8px 0}.comment-list{display:flex;flex-direction:column;gap:12px;margin-bottom:16px}.comment-item{padding:10px 12px;background:var(--surface-color);border-radius:8px;border:1px solid var(--border-color)}.comment-reply{margin-left:20px;border-left:2px solid var(--primary-color)}.comment-header{display:flex;align-items:center;gap:8px;margin-bottom:4px}.comment-author{font-weight:600;font-size:.85rem;color:var(--primary-color)}.comment-time{font-size:.75rem;color:var(--text-secondary)}.comment-content{margin:0;font-size:.9rem;color:var(--text-primary);line-height:1.5;white-space:pre-wrap}.comment-actions{display:flex;gap:8px;margin-top:6px}.comment-action-btn{background:none;border:none;color:var(--text-secondary);font-size:.75rem;cursor:pointer;padding:2px 4px;border-radius:4px;transition:all .2s}.comment-action-btn:hover{color:var(--primary-color);background:#ffd32a1a}.comment-action-delete:hover{color:var(--accent-color);background:#ff5e571a}.comment-form,.comment-reply-form,.comment-edit-form,.comment-delete-form{display:flex;flex-direction:column;gap:8px;margin-top:8px}.comment-form-row{display:flex;gap:8px}.comment-author-input,.comment-password-input{flex:1;padding:8px 10px;background:var(--background-color);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-size:.85rem}.comment-author-input:focus,.comment-password-input:focus{outline:none;border-color:var(--secondary-color)}.comment-textarea,.comment-edit-textarea{width:100%;min-height:60px;padding:8px 10px;background:var(--background-color);border:1px solid var(--border-color);border-radius:6px;color:var(--text-primary);font-family:inherit;font-size:.85rem;resize:vertical}.comment-textarea:focus,.comment-edit-textarea:focus{outline:none;border-color:var(--secondary-color)}.comment-submit-btn,.comment-btn-save{align-self:flex-end;padding:6px 16px;background:var(--secondary-color);color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:background-color .2s}.comment-submit-btn:hover:not(:disabled),.comment-btn-save:hover:not(:disabled){background:var(--primary-color);color:#1e272e}.comment-submit-btn:disabled,.comment-btn-save:disabled{opacity:.6;cursor:not-allowed}.comment-btn-cancel{padding:6px 16px;background:transparent;color:var(--text-secondary);border:1px solid var(--border-color);border-radius:6px;font-size:.85rem;cursor:pointer;transition:all .2s}.comment-btn-cancel:hover{background:var(--border-color);color:var(--text-primary)}.comment-btn-delete{padding:6px 16px;background:var(--accent-color);color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:background-color .2s}.comment-btn-delete:hover:not(:disabled){background:#e04540}.comment-edit-actions{display:flex;gap:8px;justify-content:flex-end}.comment-error{color:var(--accent-color);font-size:.8rem}.comment-replies{margin-top:8px;display:flex;flex-direction:column;gap:8px}@media(max-width:600px){.comment-form-row{flex-direction:column}.comment-reply{margin-left:12px}}.song-form{max-width:600px;margin:0 auto;animation:fadeIn .3s ease-out}.song-form h2{color:var(--primary-color);margin-bottom:25px;text-align:center}.form-row{display:flex;gap:15px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:8px;font-weight:600;color:var(--text-primary)}.form-group input,.form-group textarea,.form-group select{width:100%;padding:12px;border:1px solid var(--border-color);border-radius:8px;font-size:1rem;transition:border-color .2s,box-shadow .2s;background-color:var(--surface-color);color:var(--text-primary);box-sizing:border-box}.form-group input:focus,.form-group textarea:focus,.form-group select:focus{border-color:var(--primary-color);outline:none;box-shadow:0 0 0 3px #6c5ce733}.form-group input[type=range]{padding:0;height:6px;-webkit-appearance:none;appearance:none;background:var(--border-color);border:none;cursor:pointer}.form-group input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;border-radius:50%;background:var(--primary-color);cursor:pointer}.link-error{display:block;margin-top:6px;color:var(--accent-color);font-size:.85rem}.form-actions{display:flex;justify-content:flex-end;gap:15px;margin-top:30px}.save-btn{background-color:var(--primary-color);color:#fff;border:none;padding:12px 24px;border-radius:8px;cursor:pointer;font-weight:600;transition:transform .1s,box-shadow .2s}.save-btn:hover{background-color:var(--primary-hover);box-shadow:0 4px 12px #6c5ce74d;transform:translateY(-1px)}.cancel-btn{background-color:transparent;color:var(--text-secondary);border:1px solid var(--border-color);padding:12px 24px;border-radius:8px;cursor:pointer;font-weight:600;transition:background-color .2s}.cancel-btn:hover{background-color:#f1f2f6;color:var(--text-primary)}@media(max-width:768px){.song-form{max-width:100%}.form-row{flex-direction:column;gap:0}.form-actions{flex-direction:column;gap:10px}.form-actions button{width:100%}}.search-bar{margin-bottom:20px}.search-bar input{width:100%;padding:14px 20px;font-size:1rem;border:2px solid transparent;background-color:var(--background-color);border-radius:30px;outline:none;transition:all .3s ease;color:var(--text-primary);box-shadow:inset 0 2px 4px #0000000d}.search-bar input:focus{background-color:var(--surface-color);border-color:var(--primary-color);box-shadow:0 4px 12px #6c5ce726}.search-bar input::placeholder{color:#b2bec3}@media(max-width:768px){.search-bar input{padding:10px 16px;font-size:.9rem}}.rehearsal-detail{background-color:var(--background-color);border-radius:8px;padding:16px;height:100%;overflow-y:auto}.detail-date-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--border-color)}.detail-date{font-weight:600;color:var(--primary-color);font-size:1rem}.detail-count{font-size:.85rem;color:var(--text-secondary)}.detail-empty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:30px 0;color:var(--text-secondary);font-style:italic}.detail-add-btn{background:none;border:2px dashed var(--border-color);color:var(--text-secondary);padding:8px 16px;border-radius:8px;cursor:pointer;font-size:.9rem;transition:all .2s}.detail-add-btn:hover{border-color:var(--primary-color);color:var(--primary-color)}.detail-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:10px}.detail-item{background-color:var(--surface-color);border-radius:8px;padding:12px;transition:transform .2s}.detail-item:hover{transform:translate(3px)}.detail-item-header{display:flex;align-items:center;gap:8px;margin-bottom:6px}.detail-color-bar{width:4px;height:20px;border-radius:2px;flex-shrink:0}.detail-title{font-weight:600;color:var(--text-primary);flex:1}.detail-time{font-size:.85rem;color:var(--secondary-color);font-weight:600}.detail-period,.detail-location{font-size:.85rem;color:var(--text-secondary);margin-bottom:6px;padding-left:12px}.detail-location-link{color:var(--secondary-color);text-decoration:none}.detail-location-link:hover{text-decoration:underline}.detail-songs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px;padding-left:12px}.detail-song-tag{background-color:#0fbcf926;color:var(--secondary-color);padding:2px 8px;border-radius:4px;font-size:.8rem}.detail-memo{margin:0 0 6px;padding-left:12px;font-size:.9rem;color:var(--text-secondary)}.detail-actions{display:flex;justify-content:flex-end;gap:8px}.detail-edit-btn,.detail-delete-btn{background:none;border:1px solid var(--border-color);color:var(--text-secondary);padding:4px 12px;border-radius:6px;font-size:.8rem;cursor:pointer;transition:all .2s}.detail-edit-btn:hover{border-color:var(--secondary-color);color:var(--secondary-color)}.detail-delete-btn:hover{border-color:var(--accent-color);color:var(--accent-color)}@media(max-width:768px){.rehearsal-detail{padding:12px}.detail-date{font-size:.9rem}.detail-empty{padding:20px 0}.detail-item{padding:10px}.detail-songs,.detail-memo,.detail-location,.detail-period{padding-left:0}}.location-picker{display:flex;flex-direction:column;gap:8px;margin-top:4px}.location-search-wrapper{position:relative}.location-search{display:flex;gap:6px}.location-search input{flex:1;padding:8px 12px;border:2px solid var(--border-color);border-radius:8px;background-color:var(--background-color);color:var(--text-primary);font-size:.9rem;font-family:inherit}.location-search input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #ffd32a33}.location-search button{padding:8px 14px;border:none;border-radius:8px;background-color:var(--secondary-color);color:#fff;font-size:.85rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:all .2s}.location-search button:hover{opacity:.85}.location-results{position:absolute;top:100%;left:0;right:0;margin:4px 0 0;padding:0;list-style:none;background-color:var(--surface-color);border:2px solid var(--border-color);border-radius:8px;max-height:220px;overflow-y:auto;z-index:100;box-shadow:0 4px 12px #0000004d}.location-result-item{display:flex;flex-direction:column;gap:2px;padding:10px 12px;cursor:pointer;transition:background-color .15s}.location-result-item:hover{background-color:var(--hover-color, rgba(255, 255, 255, .05))}.location-result-item+.location-result-item{border-top:1px solid var(--border-color)}.location-result-title{font-size:.9rem;font-weight:600;color:var(--text-primary)}.location-result-address{font-size:.8rem;color:var(--text-secondary)}.location-map{width:100%;height:250px;border-radius:8px;overflow:hidden;border:2px solid var(--border-color);position:relative}.location-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background-color:var(--surface-color);color:var(--text-secondary);font-size:.9rem}.location-error{margin:0;color:var(--accent-color);font-size:.85rem}.location-actions{display:flex;justify-content:space-between;align-items:center}.location-hint{margin:0;font-size:.8rem;color:var(--text-secondary)}.location-confirm-btn{padding:6px 16px;border:none;border-radius:6px;background-color:var(--primary-color);color:#1e272e;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s}.location-confirm-btn:hover{background-color:var(--primary-hover)}@media(max-width:768px){.location-map{height:200px}}.rehearsal-modal{max-width:500px;max-height:85vh;overflow-y:auto}.rehearsal-modal .modal-body{display:flex;flex-direction:column;gap:14px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group label{font-size:.9rem;font-weight:600;color:var(--text-secondary)}.form-group input[type=text],.form-group input[type=date],.form-group input[type=time],.form-group textarea{width:100%;padding:10px 12px;border:2px solid var(--border-color);border-radius:8px;background-color:var(--background-color);color:var(--text-primary);font-size:.95rem;font-family:inherit;transition:all .2s;box-sizing:border-box}.form-group input:focus,.form-group textarea:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #ffd32a33}.form-group textarea{resize:vertical;min-height:60px}.form-group input[type=date],.form-group input[type=time]{color-scheme:dark}.form-row{display:flex;gap:12px}.form-row .form-group{flex:1}.form-toggle{flex-direction:row!important;align-items:center}.toggle-label{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:.9rem;color:var(--text-primary)!important}.toggle-label input[type=checkbox]{width:16px;height:16px;accent-color:var(--primary-color);cursor:pointer}.location-input-row{display:flex;gap:6px}.location-input-row input{flex:1}.location-map-toggle{padding:8px 12px;border:2px solid var(--border-color);border-radius:8px;background-color:var(--background-color);cursor:pointer;font-size:1.1rem;transition:all .2s;flex-shrink:0}.location-map-toggle:hover{border-color:var(--secondary-color)}.location-map-toggle.active{border-color:var(--secondary-color);background-color:#0fbcf926}.color-picker{display:flex;gap:8px}.color-option{width:28px;height:28px;border-radius:50%;border:3px solid transparent;cursor:pointer;transition:all .2s}.color-option:hover{transform:scale(1.15)}.color-option.active{border-color:var(--text-primary);box-shadow:0 0 0 2px var(--background-color),0 0 0 4px var(--text-primary)}.song-select-list{display:flex;flex-wrap:wrap;gap:6px;max-height:150px;overflow-y:auto;padding:4px 0}.song-select-item{background-color:var(--background-color);border:1px solid var(--border-color);color:var(--text-secondary);padding:4px 10px;border-radius:6px;font-size:.8rem;cursor:pointer;transition:all .2s}.song-select-item:hover{border-color:var(--secondary-color);color:var(--text-primary)}.song-select-item.selected{background-color:#0fbcf926;border-color:var(--secondary-color);color:var(--secondary-color);font-weight:600}.form-error{margin:0;color:var(--accent-color);font-size:.9rem}.modal-save-btn{padding:10px 20px;border:none;border-radius:8px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all .2s;background-color:var(--primary-color);color:#1e272e}.modal-save-btn:hover{background-color:var(--primary-hover);transform:translateY(-1px);box-shadow:0 4px 12px #ffd32a4d}.modal-save-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}@media(max-width:768px){.rehearsal-modal{max-width:95%;max-height:90vh}.form-row{flex-direction:column;gap:14px}.song-select-list{max-height:120px}}.react-calendar{width:350px;max-width:100%;background:#fff;border:1px solid #a0a096;font-family:Arial,Helvetica,sans-serif;line-height:1.125em}.react-calendar--doubleView{width:700px}.react-calendar--doubleView .react-calendar__viewContainer{display:flex;margin:-.5em}.react-calendar--doubleView .react-calendar__viewContainer>*{width:50%;margin:.5em}.react-calendar,.react-calendar *,.react-calendar *:before,.react-calendar *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.react-calendar button{margin:0;border:0;outline:none}.react-calendar button:enabled:hover{cursor:pointer}.react-calendar__navigation{display:flex;height:44px;margin-bottom:1em}.react-calendar__navigation button{min-width:44px;background:none}.react-calendar__navigation button:disabled{background-color:#f0f0f0}.react-calendar__navigation button:enabled:hover,.react-calendar__navigation button:enabled:focus{background-color:#e6e6e6}.react-calendar__month-view__weekdays{text-align:center;text-transform:uppercase;font:inherit;font-size:.75em;font-weight:700}.react-calendar__month-view__weekdays__weekday{padding:.5em}.react-calendar__month-view__weekNumbers .react-calendar__tile{display:flex;align-items:center;justify-content:center;font:inherit;font-size:.75em;font-weight:700}.react-calendar__month-view__days__day--weekend{color:#d10000}.react-calendar__month-view__days__day--neighboringMonth,.react-calendar__decade-view__years__year--neighboringDecade,.react-calendar__century-view__decades__decade--neighboringCentury{color:#757575}.react-calendar__year-view .react-calendar__tile,.react-calendar__decade-view .react-calendar__tile,.react-calendar__century-view .react-calendar__tile{padding:2em .5em}.react-calendar__tile{max-width:100%;padding:10px 6.6667px;background:none;text-align:center;font:inherit;font-size:.833em}.react-calendar__tile:disabled{background-color:#f0f0f0;color:#ababab}.react-calendar__month-view__days__day--neighboringMonth:disabled,.react-calendar__decade-view__years__year--neighboringDecade:disabled,.react-calendar__century-view__decades__decade--neighboringCentury:disabled{color:#cdcdcd}.react-calendar__tile:enabled:hover,.react-calendar__tile:enabled:focus{background-color:#e6e6e6}.react-calendar__tile--now{background:#ffff76}.react-calendar__tile--now:enabled:hover,.react-calendar__tile--now:enabled:focus{background:#ffffa9}.react-calendar__tile--hasActive{background:#76baff}.react-calendar__tile--hasActive:enabled:hover,.react-calendar__tile--hasActive:enabled:focus{background:#a9d4ff}.react-calendar__tile--active{background:#006edc;color:#fff}.react-calendar__tile--active:enabled:hover,.react-calendar__tile--active:enabled:focus{background:#1087ff}.react-calendar--selectRange .react-calendar__tile--hover{background-color:#e6e6e6}.rehearsal-calendar-wrapper{background-color:var(--surface-color);border-radius:var(--radius-md);padding:20px;box-shadow:var(--shadow-sm);grid-column:1 / -1}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;border-bottom:2px solid var(--border-color);padding-bottom:10px}.calendar-header h3{margin:0;color:var(--text-primary);font-size:1.2rem}.calendar-add-btn{background-color:var(--primary-color);color:#1e272e;border:none;padding:8px 16px;border-radius:8px;font-weight:600;font-size:.9rem;cursor:pointer;transition:all .2s}.calendar-add-btn:hover{background-color:var(--primary-hover);transform:translateY(-1px);box-shadow:0 4px 12px #ffd32a4d}.calendar-body{display:flex;gap:20px}.calendar-left,.calendar-right{flex:1;min-width:0}.react-calendar{width:100%!important;background-color:var(--background-color)!important;border:none!important;border-radius:8px;font-family:var(--font-family)!important;padding:8px}.react-calendar__navigation{margin-bottom:8px}.react-calendar__navigation button{color:var(--text-primary)!important;font-size:1rem;font-weight:600;background:none;border-radius:8px;min-width:36px;height:36px}.react-calendar__navigation button:hover,.react-calendar__navigation button:focus{background-color:var(--surface-color)!important}.react-calendar__navigation button:disabled{background:none!important;color:var(--border-color)!important}.react-calendar__month-view__weekdays{text-transform:none!important;font-size:.85rem;color:var(--text-secondary)}.react-calendar__month-view__weekdays abbr{text-decoration:none!important;color:var(--text-secondary)}.react-calendar__tile{color:var(--text-primary)!important;background:none!important;border-radius:8px;padding:8px 4px!important;font-size:.9rem;position:relative;display:flex;flex-direction:column;align-items:center;gap:4px;min-height:48px}.react-calendar__tile:hover{background-color:var(--surface-color)!important}.react-calendar__tile--now{background-color:#0fbcf926!important;border:1px solid var(--secondary-color)}.react-calendar__tile--active{background-color:#ffd32a33!important;border:2px solid var(--primary-color)!important}.react-calendar__tile--active:hover{background-color:#ffd32a4d!important}.react-calendar__month-view__days__day--neighboringMonth{color:var(--border-color)!important}.rehearsal-dots{display:flex;gap:3px;justify-content:center}.rehearsal-dot{width:6px;height:6px;border-radius:50%;display:inline-block}.period-highlight{background-color:#ffd32a14!important}.period-start{border-top-left-radius:8px!important;border-bottom-left-radius:8px!important}.period-end{border-top-right-radius:8px!important;border-bottom-right-radius:8px!important}@media(max-width:768px){.rehearsal-calendar-wrapper{padding:14px}.calendar-header h3{font-size:1.05rem}.calendar-add-btn{padding:6px 12px;font-size:.8rem}.calendar-body{flex-direction:column}.react-calendar{padding:4px}.react-calendar__navigation button{font-size:.9rem;min-width:32px;height:32px}.react-calendar__tile{min-height:40px;padding:6px 2px!important;font-size:.8rem}.rehearsal-dot{width:4px;height:4px}}.dashboard{padding:20px;animation:fadeIn .3s ease-out;overflow-y:auto;flex:1;min-height:0}.dashboard-header{margin-bottom:30px}.dashboard-header h2{margin:0 0 10px;color:var(--primary-color);font-size:2rem}.dashboard-subtitle{margin:0;color:var(--text-secondary);font-size:1rem}.dashboard-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.dashboard-card{background-color:var(--surface-color);border-radius:var(--radius-md);padding:20px;box-shadow:var(--shadow-sm);transition:transform .2s,box-shadow .2s}.dashboard-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.dashboard-card h3{margin:0 0 15px;color:var(--text-primary);font-size:1.2rem;border-bottom:2px solid var(--border-color);padding-bottom:10px}.recent-list{list-style:none;padding:0;margin:0}.recent-item{display:flex;justify-content:space-between;align-items:center;padding:12px;margin-bottom:8px;background-color:var(--background-color);border-radius:8px;cursor:pointer;transition:all .2s}.recent-item:hover{background-color:var(--border-color);transform:translate(5px)}.recent-info{display:flex;flex-direction:column;gap:4px}.recent-title{font-weight:600;color:var(--text-primary)}.recent-artist{font-size:.9rem;color:var(--text-secondary)}.recent-date{font-size:.85rem;color:var(--text-secondary)}.quick-actions{display:flex;flex-direction:column;gap:10px}.action-btn{background-color:var(--background-color);color:var(--text-primary);border:2px solid var(--border-color);padding:12px;border-radius:8px;cursor:pointer;font-weight:600;transition:all .2s;text-align:left}.action-btn:hover{background-color:var(--primary-color);color:#1e272e;border-color:var(--primary-color);transform:translate(5px)}.tips-card{grid-column:span 2}.tips-content{display:flex;flex-direction:column;gap:12px}.tips-content p{margin:0;padding:12px;background-color:var(--background-color);border-radius:8px;border-left:4px solid var(--accent-color);color:var(--text-primary)}.stats-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}.stat-item{display:flex;flex-direction:column;align-items:center;padding:20px;background-color:var(--background-color);border-radius:8px}.stat-value{font-size:2.5rem;font-weight:700;color:var(--primary-color)}.stat-label{font-size:.9rem;color:var(--text-secondary);margin-top:4px}.status-list{display:flex;flex-direction:column;gap:10px}.status-item{display:flex;justify-content:space-between;align-items:center;padding:12px;background-color:var(--background-color);border-radius:8px}.status-item.clickable{cursor:pointer;transition:all .2s}.status-item.clickable:hover,.status-item.active{background-color:var(--border-color)}.status-arrow{display:inline-block;margin-left:8px;font-size:.8rem;transition:transform .2s}.status-arrow.open{transform:rotate(180deg)}.status-songs{background-color:var(--background-color);border-radius:8px;padding:4px 0;margin-top:-4px;border:1px solid var(--border-color)}.status-song-item{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;cursor:pointer;transition:all .2s}.status-song-item:hover{background-color:var(--border-color);padding-left:20px}.status-song-title{font-weight:600;color:var(--text-primary);font-size:.9rem}.status-song-artist{font-size:.85rem;color:var(--text-secondary)}.status-songs-loading,.status-songs-empty{text-align:center;padding:12px;color:var(--text-secondary);font-size:.9rem}.status-badge{padding:4px 12px;border-radius:12px;font-size:.85rem;font-weight:600}.status-badge.practice{background-color:#0fbcf933;color:var(--secondary-color)}.status-badge.completed{background-color:#ffd32a33;color:var(--primary-color)}.status-badge.onhold{background-color:#ff5e5733;color:var(--accent-color)}.status-count{font-weight:600;color:var(--text-primary)}.empty-card{text-align:center;padding:30px;color:var(--text-secondary);font-style:italic}.loading-small{text-align:center;padding:20px;color:var(--text-secondary)}@media(max-width:768px){.dashboard{padding:12px}.dashboard-header{margin-bottom:16px}.dashboard-header h2{font-size:1.4rem}.dashboard-grid{grid-template-columns:1fr;gap:12px}.dashboard-card{padding:14px}.dashboard-card h3{font-size:1.05rem;margin-bottom:10px;padding-bottom:8px}.tips-card{grid-column:span 1}.stat-value{font-size:1.8rem}.stats-grid{grid-template-columns:repeat(2,1fr);gap:10px}.stat-item{padding:14px 10px}.recent-item{flex-direction:column;align-items:flex-start;gap:4px;padding:10px}.recent-date{align-self:flex-end}.tips-content p{padding:10px;font-size:.9rem}}.song-suggestion{max-width:800px;margin:0 auto;padding:20px;overflow-y:auto;flex:1;min-height:0}.suggestion-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px}.suggestion-header h2{margin:0;font-size:1.5rem;color:var(--primary-color)}.suggestion-form{display:flex;flex-direction:column;gap:12px;background-color:var(--surface-color);padding:20px;border-radius:var(--radius-md);margin-bottom:24px;border:1px solid var(--border-color)}.suggestion-form input,.suggestion-form textarea{padding:10px 14px;border:1px solid var(--border-color);border-radius:8px;background-color:var(--background-color);color:var(--text-primary);font-size:.95rem;font-family:inherit;outline:none;transition:border-color .2s;resize:vertical}.suggestion-form input:focus,.suggestion-form textarea:focus{border-color:var(--primary-color)}.suggestion-form input::placeholder,.suggestion-form textarea::placeholder{color:var(--text-secondary);opacity:.6}.suggestion-form .primary-btn{align-self:flex-end}.suggestion-empty{text-align:center;padding:60px 20px;color:var(--text-secondary);font-size:1.1rem}.suggestion-list{display:flex;flex-direction:column;gap:12px}.suggestion-card{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;background-color:var(--surface-color);padding:16px 20px;border-radius:var(--radius-md);border:1px solid var(--border-color);transition:transform .15s,box-shadow .15s}.suggestion-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.suggestion-info{display:flex;align-items:center;gap:16px;flex:1;min-width:0}.suggestion-rank{font-size:1.1rem;font-weight:700;color:var(--primary-color);min-width:30px}.suggestion-details{flex:1;min-width:0}.suggestion-details h3{margin:0;font-size:1.05rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.suggestion-artist{margin:2px 0 0;font-size:.85rem;color:var(--text-secondary)}.suggestion-memo{margin:4px 0 0;font-size:.82rem;color:var(--text-secondary);opacity:.8;white-space:pre-wrap;line-height:1.4}.suggestion-link{font-size:1.2rem;text-decoration:none;transition:transform .2s;flex-shrink:0}.suggestion-link:hover{transform:scale(1.2)}.suggestion-youtube{width:100%;margin-top:12px}.suggestion-youtube iframe{width:100%;aspect-ratio:16 / 9;border:none;border-radius:8px}.suggestion-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.vote-btn{display:flex;align-items:center;gap:4px;padding:6px 12px;border:1px solid var(--border-color);border-radius:20px;background-color:var(--background-color);color:var(--text-secondary);cursor:pointer;font-size:.85rem;transition:all .2s}.vote-btn:hover.vote-up{border-color:#2ecc71;background-color:#2ecc711a;color:#2ecc71}.vote-btn:hover.vote-down{border-color:var(--accent-color);background-color:#ff5e571a;color:var(--accent-color)}.vote-score{font-weight:700;font-size:.9rem;color:var(--text-primary);min-width:30px;text-align:center}.delete-btn{padding:6px 10px;border:none;border-radius:8px;background-color:transparent;cursor:pointer;font-size:1rem;opacity:.5;transition:opacity .2s}.delete-btn:hover{opacity:1}@media(max-width:768px){.song-suggestion{padding:12px}.suggestion-header{flex-direction:column;align-items:flex-start;gap:12px}.suggestion-header .primary-btn{width:100%;text-align:center}.suggestion-form{padding:14px}.suggestion-card{flex-direction:column;align-items:flex-start;gap:12px;padding:14px}.suggestion-details h3{white-space:normal}.suggestion-actions{width:100%;justify-content:flex-end}.vote-btn{padding:6px 10px;font-size:.8rem}}.member-dashboard{padding:20px;max-width:1200px;margin:0 auto;width:100%;overflow-y:auto;flex:1}.dashboard-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}.dashboard-header h2{color:var(--primary-color);margin:0}.member-form{background-color:var(--surface-color);padding:20px;border-radius:12px;box-shadow:var(--shadow-sm);margin-bottom:30px;display:flex;gap:15px;flex-wrap:wrap;animation:slideDown .3s ease-out}.member-form input{padding:12px;border:1px solid #ddd;border-radius:8px;flex:1;min-width:200px;font-family:inherit}.member-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:20px}.member-card{background-color:var(--surface-color);padding:30px 20px;border-radius:16px;box-shadow:var(--shadow-sm);cursor:pointer;transition:all .2s ease;border:2px solid transparent;display:flex;flex-direction:column;align-items:center;text-align:center}.member-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-md);border-color:var(--primary-color)}.member-avatar{width:80px;height:80px;border-radius:50%;background-color:var(--primary-color);color:#fff;font-size:2rem;font-weight:700;display:flex;align-items:center;justify-content:center;margin-bottom:15px}.member-card h3{margin:0 0 8px;color:var(--text-primary);font-size:1.2rem}.member-card .instrument{color:var(--text-secondary);font-weight:500;margin:0;font-size:.9rem;background-color:#f1f2f6;padding:4px 12px;border-radius:20px}@media(max-width:600px){.member-grid{grid-template-columns:repeat(2,1fr);gap:15px}.member-card{padding:20px 10px}.member-avatar{width:60px;height:60px;font-size:1.5rem}.member-form{flex-direction:column}.member-form button{width:100%}}.member-detail{padding:20px;max-width:1000px;margin:0 auto;width:100%;overflow-y:auto;flex:1}.member-header-section{margin-bottom:30px;background:var(--surface-color);padding:25px;border-radius:12px;box-shadow:var(--shadow-sm);animation:slideDown .3s ease-out}.back-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:1rem;padding:0;margin-bottom:20px;display:flex;align-items:center;gap:5px}.member-profile{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.member-avatar-large{width:80px;height:80px;border-radius:50%;background-color:var(--primary-color);color:#fff;font-size:2rem;font-weight:700;display:flex;align-items:center;justify-content:center}.member-info h2{margin:0 0 8px;font-size:1.8rem;color:var(--text-primary)}.instrument-badge{background-color:#ecf0f1;padding:6px 14px;border-radius:20px;font-size:.9rem;color:var(--text-secondary);font-weight:500}.delete-btn-text{margin-left:auto;background:none;border:none;color:#e74c3c;cursor:pointer;font-size:.9rem;padding:8px 12px;border-radius:6px;transition:background-color .2s}.delete-btn-text:hover{background-color:#fadbd8}.personal-log-upload{margin-bottom:30px;background-color:var(--background-light);padding:20px;border-radius:12px}.logs-list h3{margin-bottom:20px;color:var(--text-primary)}.logs-grid{display:flex;flex-direction:column;gap:12px}.log-card{background:#252a33;border:1px solid #363b46;border-radius:8px;padding:12px 16px;display:flex;flex-direction:row;align-items:center;gap:16px;transition:background-color .2s}.log-card:hover{background:#2c323c}.log-icon-wrapper{display:flex;align-items:center;justify-content:center;width:40px;height:40px;background:transparent;border-radius:4px;flex-shrink:0}.log-icon{font-size:1.5rem}.log-info{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.log-title{color:#e2e8f0;font-size:.95rem;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.log-meta{color:#94a3b8;font-size:.8rem;display:flex;gap:8px;align-items:center}.log-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.play-btn{display:flex;align-items:center;gap:6px;background-color:#3b82f6;color:#fff;border:none;padding:6px 12px;border-radius:4px;font-size:.85rem;font-weight:500;cursor:pointer;transition:background-color .2s}.play-btn:hover{background-color:#2563eb}.delete-action-btn{background:#374151;border:none;color:#9ca3af;width:32px;height:32px;border-radius:4px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s}.delete-action-btn:hover{background-color:#ef4444;color:#fff}.inline-player-wrapper{position:relative;margin-bottom:16px;background:var(--background-color);border:1px solid var(--border-color);border-radius:8px;padding:16px}.close-player-btn{position:absolute;top:8px;right:8px;background:none;border:none;color:var(--text-secondary);font-size:1.4rem;cursor:pointer;line-height:1;padding:4px 8px;border-radius:4px;transition:all .2s}.close-player-btn:hover{color:var(--text-primary);background-color:var(--surface-color)}@media(max-width:600px){.member-profile{flex-direction:column;align-items:flex-start;gap:15px}.delete-btn-text{margin-left:0;margin-top:10px}.log-card{padding:10px;gap:10px}.log-meta{flex-direction:column;align-items:flex-start;gap:2px}.play-btn span{display:none}.play-btn{padding:8px}}.announcement-toast{display:flex;align-items:center;gap:12px;padding:10px 20px;background:linear-gradient(135deg,#ffd32a1f,#0fbcf914);border-bottom:1px solid rgba(255,211,42,.2);flex-shrink:0;animation:slideDown .3s ease-out}@keyframes slideDown{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}.announcement-icon{font-size:1.2rem;flex-shrink:0}.announcement-display{display:flex;align-items:center;gap:10px;flex:1;min-width:0;cursor:pointer;padding:4px 8px;border-radius:6px;transition:background-color .2s}.announcement-display:hover{background-color:#ffffff0d}.announcement-text{flex:1;font-size:.95rem;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.announcement-text:empty:before,.announcement-display .announcement-text:only-child{color:var(--text-secondary);font-style:italic}.announcement-edit-btn{background:none;border:none;cursor:pointer;font-size:.9rem;padding:4px 6px;border-radius:4px;opacity:0;transition:opacity .2s,background-color .2s;flex-shrink:0}.announcement-display:hover .announcement-edit-btn{opacity:1}.announcement-edit-btn:hover{background-color:#ffffff1a}.announcement-edit{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.announcement-input{flex:1;padding:6px 12px;background-color:var(--surface-color);border:2px solid var(--primary-color);border-radius:6px;color:var(--text-primary);font-family:inherit;font-size:.95rem;outline:none;transition:border-color .2s}.announcement-input:focus{border-color:var(--secondary-color);box-shadow:0 0 0 3px #0fbcf926}.announcement-input::placeholder{color:var(--text-secondary)}.announcement-edit-actions{display:flex;gap:6px;flex-shrink:0}.announcement-save-btn,.announcement-cancel-btn{padding:5px 12px;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;transition:all .2s;white-space:nowrap}.announcement-save-btn{background-color:var(--primary-color);color:#1e272e}.announcement-save-btn:hover:not(:disabled){background-color:var(--primary-hover);transform:translateY(-1px)}.announcement-save-btn:disabled{opacity:.5;cursor:not-allowed}.announcement-cancel-btn{background-color:transparent;color:var(--text-secondary);border:1px solid var(--border-color)}.announcement-cancel-btn:hover:not(:disabled){color:var(--text-primary);border-color:var(--text-secondary)}@media(max-width:768px){.announcement-toast{padding:8px 12px;gap:8px}.announcement-text{font-size:.85rem}.announcement-edit{flex-wrap:wrap}.announcement-input{width:100%;font-size:.85rem}.announcement-edit-actions{width:100%;justify-content:flex-end}}.app-container{display:flex;flex-direction:column;height:100vh;height:100dvh;max-width:1400px;margin:0 auto;background-color:var(--background-color)}.app-header{display:flex;justify-content:space-between;align-items:center;padding:1rem 2rem;background-color:var(--surface-color);box-shadow:var(--shadow-sm);z-index:10;flex-shrink:0}.header-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.nav-btn{background-color:transparent;color:var(--text-secondary);border:2px solid transparent;padding:8px 16px;border-radius:8px;cursor:pointer;font-weight:600;transition:all .2s;white-space:nowrap}.nav-btn:hover{color:var(--primary-color);background-color:var(--background-color)}.nav-btn.active{color:var(--primary-color);border-color:var(--primary-color);background-color:var(--background-color)}.logo h1{margin:0;font-size:1.5rem;color:var(--primary-color);font-weight:700;letter-spacing:-.5px}.app-main{display:flex;flex:1;overflow:hidden;gap:20px;padding:20px;min-height:0}.sidebar{width:350px;background-color:var(--surface-color);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;padding:20px;overflow-y:auto;flex-shrink:0}.content-area{flex:1;background-color:var(--surface-color);border-radius:var(--radius-md);box-shadow:var(--shadow-md);padding:30px;overflow-y:auto;position:relative;min-width:0}.primary-btn{background-color:var(--primary-color);color:#fff;border:none;padding:10px 20px;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 4px #6c5ce74d}.primary-btn:hover{background-color:var(--primary-hover);transform:translateY(-1px);box-shadow:0 4px 8px #6c5ce766}.secondary-btn{background-color:var(--surface-color);color:var(--primary-color);border:2px solid var(--primary-color);padding:8px 16px;border-radius:8px;font-weight:600;cursor:pointer;transition:all .2s ease}.secondary-btn:hover{background-color:#f0f0ff}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-secondary);text-align:center}.empty-state p{font-size:1.2rem;margin-bottom:20px}.loading{text-align:center;padding:20px;color:var(--text-secondary)}@media(max-width:768px){.app-header{flex-direction:column;padding:10px 12px;gap:8px}.header-actions{width:100%;justify-content:center;gap:6px}.nav-btn{padding:6px 10px;font-size:.85rem}.primary-btn{padding:8px 14px;font-size:.85rem}.app-main{flex-direction:column;padding:10px;gap:10px}.sidebar{width:100%;height:100%;flex:1;display:flex;padding:12px}.content-area,.app-main.has-selected-song .sidebar{display:none}.app-main.has-selected-song .content-area{display:block;width:100%;height:100%;flex:1;padding:15px}.empty-state{display:none}}.logo-container{display:flex;align-items:center;gap:15px;flex-shrink:0}.band-logo{height:50px;object-fit:contain;filter:drop-shadow(0 0 5px rgba(255,211,42,.5))}.logo-container h1{margin:0;font-size:1.8rem;color:var(--primary-color);font-weight:800;letter-spacing:-.5px;display:flex;align-items:baseline;gap:8px}.archive-text{font-size:1.2rem;color:var(--text-secondary);font-weight:400}.primary-btn{background-color:var(--primary-color);color:#1e272e;font-weight:700}.primary-btn:hover{background-color:var(--primary-hover);box-shadow:0 0 15px #ffd32a66}.song-list h2{color:var(--primary-color)}@media(max-width:768px){.logo-container{gap:10px}.band-logo{height:36px}.logo-container h1{font-size:1.3rem}.archive-text{font-size:.9rem}}
