body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.App{align-items:center;background-color:#282c34;color:#fff;display:flex;flex-direction:column;font-size:calc(10px + 2vmin);justify-content:center;min-height:100vh}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{animation:App-logo-spin 20s linear infinite}}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.login-box{animation:floatUp .8s ease-out forwards;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#ffffff26;border-radius:16px;box-shadow:0 8px 32px #0003;display:flex;flex-direction:column;gap:18px;margin:60px auto;opacity:0;padding:30px;width:320px}@keyframes floatUp{0%{opacity:0;transform:translateY(50px)}to{opacity:1;transform:translateY(0)}}.login-box input{background-color:#fffc;border:1px solid #ddd;border-radius:10px;font-size:16px;padding:12px 14px;transition:.25s}.login-box input:focus{border-color:#4f77ff;box-shadow:0 0 10px #4f77ff66;outline:none}.login-button{animation:pulseGlow 2s infinite;background:linear-gradient(135deg,#4f77ff,#834ff7);border:none;border-radius:10px;box-shadow:0 0 12px #4f77ff66;color:#fff;cursor:pointer;font-size:16px;font-weight:700;padding:12px;transition:all .3s ease}.login-button:hover{background:linear-gradient(135deg,#576ff7,#9c4fff);transform:scale(1.03)}.admin-container{align-items:center;background-color:#f8f9fa;box-sizing:border-box;display:flex;flex-direction:column;height:100%;justify-content:space-between;padding:40px 20px;width:100%}.admin-content{margin:0 auto;width:80%}.admin-header-row{align-items:center;display:flex;gap:16px;justify-content:center;margin-bottom:30px}.admin-title{color:#343a40;font-size:28px;text-align:center}.loading-text{color:#6c757d;font-size:18px;text-align:center}.user-table{background-color:#fff;border-collapse:collapse;border-radius:8px;border-spacing:0;box-shadow:0 4px 12px #00000014;margin:0 auto;overflow:hidden;width:100%}.user-table th{background-color:#4f77ff;border-bottom:1px solid #e0e0e0;color:#fff;font-size:16px;font-weight:600;padding:14px;text-align:center}.user-table td{border-bottom:1px solid #f1f1f1;color:#333;font-size:15px;padding:12px;text-align:center}.user-table tr:hover{background-color:#f5faff}.no-data{color:#999;font-style:italic;padding:20px 0;text-align:center}.modal-overlay{align-items:center;background-color:#00000080;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:999}.modal-box{background-color:#fff;border-radius:12px;box-shadow:0 4px 16px #0003;display:flex;flex-direction:column;justify-self:center;padding:20px;text-align:center}.modal-actions button{border-radius:5px;cursor:pointer;font-size:16px;margin:10px;padding:8px 16px}.context-menu{background:#fff;border:1px solid #0000000f;border-radius:10px;box-shadow:0 8px 24px #00000024;min-width:160px;padding:6px;position:fixed;z-index:9999}.context-menu-item{background:#0000;border:none;border-radius:8px;cursor:pointer;display:block;font-size:14px;padding:10px 12px;text-align:left;width:100%}.context-menu-item:hover{background:#0000000d}.context-menu-item.danger{color:#c62828;font-weight:600}.playlist-page{background-color:#fff;color:#fff;font-family:Segoe UI,Noto Sans TC,sans-serif;padding:40px 20px;width:100%}.playlist-container{background:#707070;border-radius:16px;box-shadow:0 4px 16px #0003;margin:80px auto 40px;max-width:60%;padding:10px 32px}.playlist-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.playlist-tabs{display:flex;gap:10px;margin:10px 0}.tab-button{background-color:#2e2e3a;border:none;border-radius:8px;color:#ddd;cursor:pointer;font-size:15px;font-weight:700;padding:8px 14px;transition:background-color .3s,box-shadow .3s}.tab-button:hover{background-color:#44475a;box-shadow:0 0 6px #ffffff1a;color:#fff}.tab-button.active{background-color:#a8a7bc;box-shadow:0 0 8px #a8a7bc66;color:#fff}.add-button-container{display:flex;flex-direction:row;gap:20px}.add-button{background-color:#2e2e3a;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;padding:8px 14px;transition:background-color .3s ease}.add-button:hover,.song-table{background-color:#44475a}.song-table{border-collapse:initial;border-radius:12px;border-spacing:0;overflow-y:auto;width:100%}.song-table td,.song-table th{border-bottom:1px solid #555;font-size:14px;padding:12px 16px;text-align:left}.song-table th{background-color:#2e2e3a;color:#fff;font-weight:600}.song-table tr:last-child td{border-bottom:none}.song-table thead tr:first-child th:first-child{border-top-left-radius:12px}.song-table thead tr:first-child th:last-child{border-top-right-radius:12px}.song-table tbody tr:last-child td:first-child{border-bottom-left-radius:12px}.song-table tbody tr:last-child td:last-child{border-bottom-right-radius:12px}.song-table tbody tr:hover{background-color:#5c5c6e;cursor:pointer;transition:background-color .2s ease}.playlist-footer{color:#e0e0e0;font-size:14px;font-style:italic;opacity:.9;text-align:left}.dialog-overlay{align-items:center;background:#00000080;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1000}.dialog-box{animation:scaleIn .3s ease;background:#2f2f3a;border-radius:12px;box-shadow:0 0 20px #4f77ff26;color:#fff;font-family:Segoe UI,Noto Sans TC,sans-serif;padding:24px 20px;text-align:center;width:340px}.dialog-box h3{color:#fff;font-size:18px;font-weight:700;margin-bottom:12px}.dialog-box input[type=file],.dialog-box input[type=text]{background-color:#444;border:none;border-radius:6px;color:#fff;font-size:14px;margin:10px 0;padding:8px 10px;width:95%}.dialog-box input::file-selector-button{background-color:#555;border:none;border-radius:6px;color:#fff;cursor:pointer;margin-right:10px;padding:6px 10px}.dialog-box p{color:#aaa;font-size:14px;margin-top:8px}.dialog-actions{gap:12px}.dialog-actions button{border:none;border-radius:6px;cursor:pointer;flex:1 1;font-size:15px;font-weight:700;padding:8px 14px;transition:background-color .3s,box-shadow .3s}.dialog-actions button:first-child{background-color:#c90000;color:#fff}.dialog-actions button:first-child:hover{background-color:#d43d3d;box-shadow:0 0 10px #c8323280}.dialog-actions button:last-child{background-color:#888;color:#fff}.dialog-actions button:last-child:hover{background-color:#666;box-shadow:0 0 8px #8886}.song-action-overlay{align-items:center;background:#00000080;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1000}.song-action-modal{padding:24px 20px}.song-action-detail{color:#ddd;font-size:14px;margin:6px 0;text-align:left}.song-action-buttons{display:flex;gap:12px;justify-content:space-between;margin-top:16px}.song-action-btn{border:none;border-radius:6px;cursor:pointer;flex:1 1;font-size:15px;font-weight:700;padding:8px 14px;transition:background-color .3s,box-shadow .3s}.file-preview progress{-webkit-appearance:none;appearance:none;height:16px;margin-top:4px}.file-preview span{font-size:.9em}.song-action-btn.rename{background-color:#4a90e2;color:#fff}.song-action-btn.rename:hover{background-color:#5aa3f2;box-shadow:0 0 8px #4a90e266}.song-action-btn.delete{background-color:#c90000;color:#fff}.song-action-btn.delete:hover{background-color:#d43d3d;box-shadow:0 0 10px #c8323280}.song-action-btn.cancel{background-color:#888;color:#fff}.song-action-btn.cancel:hover{background-color:#666;box-shadow:0 0 8px #8886}.song-action-input{background-color:#444;border:none;border-radius:6px;color:#fff;font-size:14px;margin:10px auto;padding:8px 10px;width:95%}.song-action-modal{animation:scaleIn .3s ease;background:#2f2f3a;border-radius:12px;box-shadow:0 0 20px #4f77ff26;color:#fff;font-family:Segoe UI,Noto Sans TC,sans-serif;padding:24px;text-align:center;width:340px}.song-action-title{color:#fff;font-size:18px;font-weight:700;margin-bottom:12px}.file-preview{max-height:60vh;overflow-y:auto}.file-item{background-color:#3a3a4f;border:1px dashed #ccc;border-radius:4px;cursor:grab;margin-bottom:8px;padding:8px}.file-item:active{cursor:grabbing}.remove-btn{color:red;cursor:pointer;font-weight:700;margin-right:8px}.progress-bar{margin-top:4px;width:100%}.dialog-actions{display:flex;justify-content:space-between;margin-top:16px}.cancel-button,.submit-button{border:none;border-radius:4px;cursor:pointer;font-weight:700;padding:8px 16px}.submit-button{background-color:#4caf50}.cancel-button{background-color:#f44336}.cancel-button:disabled,.submit-button:disabled{cursor:not-allowed;opacity:.6;body{font-family:Segoe UI,Noto Sans TC,sans-serif;margin:0}.playlist-page{background-color:#fff;color:#fff;padding:40px 20px;width:100%}.playlist-container{background:#707070;border-radius:16px;box-shadow:0 4px 16px #0003;margin:80px auto 40px;max-width:60%;padding:10px 32px}.playlist-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:20px}.add-button{background-color:#2e2e3a;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:14px;padding:8px 14px;transition:background-color .3s ease}.add-button:hover,.song-table{background-color:#44475a}.song-table{border-collapse:initial;border-radius:12px;border-spacing:0;overflow:hidden;width:100%}.song-table td,.song-table th{border-bottom:1px solid #555;font-size:14px;padding:12px 16px;text-align:left}.song-table th{background-color:#2e2e3a;color:#fff;font-weight:600}.song-table tbody tr:hover{background-color:#5c5c6e;cursor:pointer;transition:background-color .2s ease}.song-table thead tr:first-child th:first-child{border-top-left-radius:12px}.song-table thead tr:first-child th:last-child{border-top-right-radius:12px}.song-table tbody tr:last-child td{border-bottom:none}.song-table tbody tr:last-child td:first-child{border-bottom-left-radius:12px}.song-table tbody tr:last-child td:last-child{border-bottom-right-radius:12px}.playlist-footer{color:#e0e0e0;font-size:14px;font-style:italic;margin-top:20px;opacity:.9;text-align:left}.dialog-overlay,.song-action-overlay{align-items:center;background:#00000080;display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1000}.dialog-box,.song-action-modal{animation:scaleIn .3s ease;background:#2f2f3a;border-radius:12px;box-shadow:0 0 20px #4f77ff26;color:#fff;padding:24px 20px;text-align:center;width:340px}.dialog-box h3,.song-action-title{color:#fff;font-size:18px;font-weight:700;margin-bottom:12px}.dialog-box input[type=file],.dialog-box input[type=text],.song-action-input{background-color:#444;border:none;border-radius:6px;color:#fff;font-size:14px;margin:10px auto;padding:8px 10px;width:95%}.dialog-box input::file-selector-button{background-color:#555;border:none;border-radius:6px;color:#fff;cursor:pointer;margin-right:10px;padding:6px 10px}.dialog-actions,.song-action-buttons{display:flex;gap:12px;justify-content:space-between;margin-top:16px}.cancel-button,.dialog-actions button,.song-action-btn,.submit-button{border:none;border-radius:6px;cursor:pointer;flex:1 1;font-size:15px;font-weight:700;padding:8px 14px;transition:background-color .3s,box-shadow .3s}.song-action-btn.rename{background-color:#4a90e2}.song-action-btn.rename:hover{background-color:#5aa3f2;box-shadow:0 0 8px #4a90e266}.dialog-actions button:first-child,.song-action-btn.delete{background-color:#c90000;color:#fff}.dialog-actions button:first-child:hover,.song-action-btn.delete:hover{background-color:#d43d3d;box-shadow:0 0 10px #c8323280}.dialog-actions button:last-child,.song-action-btn.cancel{background-color:#888;color:#fff}.dialog-actions button:last-child:hover,.song-action-btn.cancel:hover{background-color:#666;box-shadow:0 0 8px #8886}.file-preview{margin-top:16px}.file-item{background-color:#443160;border:1px dashed #ccc;border-radius:4px;cursor:grab;margin-bottom:8px;padding:8px}.file-item:active{cursor:grabbing}.remove-btn{color:red;cursor:pointer;font-weight:700;margin-right:8px}.file-preview progress{height:16px;margin-top:4px;width:100%}.file-preview span{font-size:.9em}.submit-button{background-color:#4caf50}.cancel-button{background-color:#f44336}.cancel-button:disabled,.submit-button:disabled{cursor:not-allowed;opacity:.6}}.group-select{background-color:#fff;border:1px solid #ccc;border-radius:6px;box-sizing:border-box;font-size:14px;margin-bottom:10px;margin-top:6px;max-width:240px;outline:none;padding:6px 10px;transition:border .2s ease;width:100%}.group-select:focus{border-color:#007bff;box-shadow:0 0 3px #007bff66}.audio-player-bar{background:#1e1e1e;border-top:1px solid #333;bottom:0;color:#fff;display:flex;flex-direction:column;font-family:sans-serif;gap:8px;left:0;padding:12px 20px;position:fixed;right:0;z-index:1000}.player-header{align-items:center;display:flex;justify-content:space-between}.close-player-btn{background:#0000;border:none;cursor:pointer;font-size:20px;padding:0}.audio-player-bar .info{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.audio-player-bar input[type=range]{-webkit-appearance:none;appearance:none;background:#555;border-radius:2px;cursor:pointer;height:4px;outline:none;width:100%}.audio-player-bar input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;background:#1db954;border-radius:50%;cursor:pointer;height:12px;margin-top:-4px;width:12px}.audio-player-bar input[type=range]::-moz-range-thumb{background:#1db954;border:none;border-radius:50%;cursor:pointer;height:12px;width:12px}.audio-player-bar .controls{align-items:center;display:flex;justify-content:center}.audio-player-bar .controls button{background:#0000;border:none;color:#fff;cursor:pointer;font-size:16px;padding:4px 12px}.audio-player-bar .controls button:hover{color:#1db954}.audio-icon{cursor:pointer;height:32px;object-fit:contain;vertical-align:middle;width:32px}.edit-group-tabs{grid-gap:8px;display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(100px,1fr));max-height:200px;overflow-y:auto;padding:5px}.edit-group-tab-item{display:flex}.edit-group-tabs .tab-button{background-color:#2e2e3a;border:none;border-radius:8px;color:#ddd;cursor:pointer;font-size:15px;font-weight:700;padding:8px 14px;transition:background-color .3s,box-shadow .3s}.edit-group-tabs .tab-button:hover{background-color:#44475a;box-shadow:0 0 6px #ffffff1a;color:#fff}.edit-group-tabs .tab-button.active{background-color:#a8a7bc;box-shadow:0 0 8px #a8a7bc66;color:#fff}.danger-button{background:#0000;border:none;color:red;cursor:pointer;font-size:14px}.admin-header{animation:subtleGradient 12s ease infinite,slideDown .6s ease-out;background:linear-gradient(135deg,#2e2e3a,#3b3d61);background-size:200% 200%;box-shadow:0 2px 8px #0000004d;color:#fff;padding:16px 0;position:sticky;top:0;width:100%;z-index:100}.header-content{align-items:center;display:flex;justify-content:space-between;margin:0 auto;padding:0 50px}.admin-header-title{cursor:pointer;font-size:20px;font-weight:600;letter-spacing:1px}.logout-modal-actions{display:flex;gap:20px;justify-content:center}.logout-button{background-color:initial;border:3px solid #888;border-radius:6px;color:#fff;cursor:pointer;font-size:16px;font-weight:700;padding:8px 14px;transition:.3s ease}.logout-button:hover{background-color:#ff4d4d;border-color:#ff4d4d;box-shadow:0 0 10px #ff4d4d80;color:#fff}.logout-modal-overlay{background:#00000080;height:100%;left:0;position:fixed;top:0;width:100%;z-index:999}.logout-modal-box,.logout-modal-overlay{align-items:center;display:flex;justify-content:center}.logout-modal-box{animation:scaleIn .3s ease,pulseGlow 3s ease-in-out infinite;background-color:#2f2f3a;border-radius:12px;box-shadow:0 0 20px #4f77ff26;color:#fff;flex-direction:column;font-family:Segoe UI,Noto Sans TC,sans-serif;font-size:15px;gap:16px;padding:24px;width:320px}@keyframes scaleIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}@keyframes pulseGlow{0%{box-shadow:0 0 10px #4f77ff33}50%{box-shadow:0 0 18px #4f77ff73}to{box-shadow:0 0 10px #4f77ff33}}@keyframes subtleGradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes slideDown{0%{opacity:0;transform:translateY(-50px)}to{opacity:1;transform:translateY(0)}}.menu-container{align-items:center;display:flex;position:relative}.dropdown-menu{background-color:#fff;border:1px solid #ccc;border-radius:6px;box-shadow:0 4px 8px #0000001a;min-width:120px;padding:8px 0;position:absolute;right:-10px;top:60px;z-index:1000}.dropdown-menu button{background:none;border:none;cursor:pointer;font-size:14px;padding:10px 16px;text-align:left;transition:background-color .2s;width:100%}.dropdown-menu button:hover{background-color:#f2f2f2}.cancel-btn,.confirm-btn{border:none;border-radius:6px;cursor:pointer;font-size:16px;padding:8px 16px;transition:.2s}.confirm-btn{background-color:#ff4d4d;color:#fff}.cancel-btn{background-color:#888;color:#fff}.confirm-btn:hover{background-color:#e63939;box-shadow:0 0 10px #ff4d4d99}.cancel-btn:hover{background-color:#666;box-shadow:0 0 8px #8886}.menu-button{background:none;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:22px;padding:8px 12px;transition:background-color .3s ease}.menu-button:hover{background-color:#ffffff26}.export-dialog-box{max-height:85vh;max-width:90%;overflow-y:auto;text-align:left;width:420px}.export-section{margin:16px 0}.export-section-title{font-weight:700;margin-bottom:8px}.export-tree{border:1px solid #ffffff26;border-radius:6px;max-height:220px;overflow-y:auto;padding:8px}.export-tree-row{align-items:center;cursor:pointer;display:flex;font-size:14px;gap:6px;padding:4px 0}.export-tree-row-root{border-bottom:1px solid #ffffff26;font-weight:700;margin-bottom:4px;padding-bottom:8px}.export-tree-row-label{align-items:center;cursor:pointer;display:flex;gap:6px}.export-tree-toggle{background:none;border:none;color:inherit;cursor:pointer;font-size:11px;padding:0;width:18px}.export-tree-children{margin-left:26px}.export-empty-hint{color:#dc3545;font-size:13px;padding:4px 0}.export-date-row{display:flex;gap:16px}.export-date-row label{display:flex;flex-direction:column;font-size:13px;gap:4px}.react-calendar{background:#fff;border:1px solid #a0a096;font-family:Arial,Helvetica,sans-serif;line-height:1.125em;max-width:100%;width:350px}.react-calendar--doubleView{width:700px}.react-calendar--doubleView .react-calendar__viewContainer{display:flex;margin:-.5em}.react-calendar--doubleView .react-calendar__viewContainer>*{margin:.5em;width:50%}.react-calendar,.react-calendar *,.react-calendar :after,.react-calendar :before{box-sizing:border-box}.react-calendar button{border:0;margin:0;outline:none}.react-calendar button:enabled:hover{cursor:pointer}.react-calendar__navigation{display:flex;height:44px;margin-bottom:1em}.react-calendar__navigation button{background:none;min-width:44px}.react-calendar__navigation button:disabled{background-color:#f0f0f0}.react-calendar__navigation button:enabled:focus,.react-calendar__navigation button:enabled:hover{background-color:#e6e6e6}.react-calendar__month-view__weekdays{font:inherit;font-size:.75em;font-weight:700;text-align:center;text-transform:uppercase}.react-calendar__month-view__weekdays__weekday{padding:.5em}.react-calendar__month-view__weekNumbers .react-calendar__tile{align-items:center;display:flex;font:inherit;font-size:.75em;font-weight:700;justify-content:center}.react-calendar__month-view__days__day--weekend{color:#d10000}.react-calendar__century-view__decades__decade--neighboringCentury,.react-calendar__decade-view__years__year--neighboringDecade,.react-calendar__month-view__days__day--neighboringMonth{color:#757575}.react-calendar__century-view .react-calendar__tile,.react-calendar__decade-view .react-calendar__tile,.react-calendar__year-view .react-calendar__tile{padding:2em .5em}.react-calendar__tile{background:none;font:inherit;font-size:.833em;max-width:100%;padding:10px 6.6667px;text-align:center}.react-calendar__tile:disabled{background-color:#f0f0f0;color:#ababab}.react-calendar__century-view__decades__decade--neighboringCentury:disabled,.react-calendar__decade-view__years__year--neighboringDecade:disabled,.react-calendar__month-view__days__day--neighboringMonth:disabled{color:#cdcdcd}.react-calendar__tile:enabled:focus,.react-calendar__tile:enabled:hover{background-color:#e6e6e6}.react-calendar__tile--now{background:#ffff76}.react-calendar__tile--now:enabled:focus,.react-calendar__tile--now:enabled:hover{background:#ffffa9}.react-calendar__tile--hasActive{background:#76baff}.react-calendar__tile--hasActive:enabled:focus,.react-calendar__tile--hasActive:enabled:hover{background:#a9d4ff}.react-calendar__tile--active{background:#006edc;color:#fff}.react-calendar__tile--active:enabled:focus,.react-calendar__tile--active:enabled:hover{background:#1087ff}.react-calendar--selectRange .react-calendar__tile--hover{background-color:#e6e6e6}.user-calendar-container{background-color:#fff;border-radius:12px;box-shadow:0 4px 16px #0000001a;height:100%;margin:50px auto;max-height:50%;max-width:50%;padding:20px;text-align:center;width:100%}.user-calendar-container .react-calendar,.user-calendar-container .user-calendar-component{background-color:initial!important;border:none!important;color:#333!important;font-family:Segoe UI,Noto Sans TC,sans-serif!important;height:100%;width:100%!important}.user-calendar-container .react-calendar__navigation{background-color:#fafafa;border-radius:6px;display:flex;justify-content:space-between;margin-bottom:8px;padding:4px}.user-calendar-container .react-calendar__navigation button{background:none!important;border:none;border-radius:4px;color:#444!important;cursor:pointer;font-size:16px;font-weight:700;padding:6px 10px;transition:background .2s ease}.user-calendar-container .react-calendar__navigation button:hover{background-color:#e6e6e6!important}.user-calendar-container .react-calendar__month-view__weekdays{border-bottom:1px solid #ddd;color:#777;font-size:12px;font-weight:700;padding-bottom:4px;text-transform:uppercase}.user-calendar-container .react-calendar__tile{background-color:initial!important;border:none!important;border-radius:8px;color:#333!important;padding:12px 0!important;position:relative;transition:background-color .3s ease}.user-calendar-container .react-calendar__tile:hover{background-color:#d3d3d3!important;cursor:pointer}.user-calendar-container .react-calendar__tile--active{background-color:grey!important;color:#fff!important;font-weight:700!important}.user-calendar-container .react-calendar__tile--now{border:3px solid #bbb!important;color:#333!important;font-weight:700!important}.user-calendar-container .react-calendar__tile--now:enabled:focus,.user-calendar-container .react-calendar__tile--now:enabled:hover{background-color:#b8b8b8!important;color:#111!important}.user-calendar-container .react-calendar__tile:disabled{background-color:#f0f0f0!important;color:#bbb!important;cursor:not-allowed}.user-calendar-container .calendar-dot:after{border-radius:50%;content:"";display:block;height:8px;left:50%;position:absolute;top:85%;transform:translate(-50%,-50%);width:8px}.user-calendar-container .calendar-dot.danger:after{background-color:red!important}.user-calendar-container .calendar-dot.warning:after{background-color:orange!important}.user-calendar-container .calendar-dot.normal:after{background-color:green!important}.user-calendar-container .user-calendar-group-row{align-items:center;display:flex;gap:10px;justify-content:center;margin-bottom:16px}.user-calendar-container .user-calendar-group-label{color:#444;font-weight:700}.user-calendar-container .user-calendar-group-badges{display:flex;flex-wrap:wrap;gap:6px}.user-calendar-container .user-calendar-badge{background-color:#f0f0f0;border-radius:6px;font-size:12px;padding:4px 8px}.user-calendar-container .user-calendar-badge-empty{color:#aaa}.user-calendar-container .user-calendar-edit-btn{background-color:#007bff;border:none;border-radius:4px;color:#fff;cursor:pointer;padding:4px 10px}.user-calendar-container .user-calendar-edit-btn:hover{background-color:#0056b3}.user-calendar-dialog-overlay{background:#0006}.user-calendar-dialog-box{background:#fff;box-shadow:0 4px 16px #0003;padding:20px;width:420px}.user-calendar-dialog-actions{gap:10px;justify-content:flex-end}.user-calendar-dialog-actions button{padding:6px 14px}.user-calendar-dialog-actions .primary{background-color:#28a745}.user-calendar-dialog-actions .primary:hover{background-color:#218838}.user-calendar-dialog-overlay{align-items:center;background:#00000080;display:flex;inset:0;justify-content:center;position:fixed;z-index:1000}.user-calendar-dialog-box{animation:uc-scaleIn .3s ease;background:#2f2f3a;border-radius:12px;box-shadow:0 0 20px #4f77ff26;color:#fff;font-family:Segoe UI,Noto Sans TC,sans-serif;max-width:90%;padding:24px 20px;width:340px}.user-calendar-dialog-box h3{font-size:18px;font-weight:700;margin-bottom:12px}.user-calendar-checkbox-grid{grid-gap:8px;display:grid;gap:8px;grid-template-columns:1fr 1fr;margin:16px 0;text-align:left}.user-calendar-checkbox-item{align-items:center;display:flex;font-size:14px;gap:6px}.user-calendar-dialog-actions{display:flex;gap:12px;justify-content:space-between;margin-top:16px}.user-calendar-dialog-actions button{border:none;border-radius:6px;cursor:pointer;flex:1 1;font-size:15px;font-weight:700;padding:8px 14px;transition:background-color .3s,box-shadow .3s}.user-calendar-dialog-actions button:first-child{background-color:#c90000;color:#fff}.user-calendar-dialog-actions button:first-child:hover{background-color:#d43d3d;box-shadow:0 0 10px #c8323280}.user-calendar-dialog-actions .primary{background-color:#888;color:#fff}.user-calendar-dialog-actions .primary:hover{background-color:#666;box-shadow:0 0 8px #8886}@keyframes uc-scaleIn{0%{opacity:0;transform:scale(.85)}to{opacity:1;transform:scale(1)}}.calendar-icon-group{display:flex;gap:6px;position:relative}.calendar-icon-survey{bottom:15px}.calendar-icon-rating,.calendar-icon-survey{background:#ffffffe6;border-radius:50%;box-shadow:0 1px 2px #0003;font-size:10px;height:16px;position:absolute;right:2px;width:16px}.calendar-icon-rating{bottom:0}.survey-summary{background-color:#f8f9fa;border-left:4px solid #007bff;border-radius:8px;box-shadow:0 2px 4px #0000001a;margin-top:20px;padding:16px;width:100%}.survey-summary h4{color:#495057;font-size:16px;font-weight:600}.survey-symptoms{margin-bottom:12px}.symptom-item{color:#6c757d;font-size:14px;line-height:1.4;padding:4px 0}.view-details-btn{background-color:#007bff;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:14px;padding:8px 16px;transition:background-color .2s}.view-details-btn:hover{background-color:#0056b3}.survey-dialog{max-height:80vh;max-width:90%!important;overflow-y:auto;width:600px!important}.survey-meta-info{background-color:#343a40;border-radius:6px;margin-bottom:16px;padding:12px}.survey-meta-info p{font-size:14px;margin:4px 0}.survey-details{margin:16px 0;text-align:left}.survey-question{background-color:#f8f9fa;border-left:3px solid #dee2e6;border-radius:8px;margin-bottom:20px;padding:16px}.survey-question strong{color:#495057;display:block;font-size:15px;margin-bottom:12px}.answer{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.answer-badge{border-radius:20px;font-size:12px;font-weight:600;padding:4px 12px;text-transform:uppercase}.answer-badge.yes{background-color:#dc3545;color:#fff}.answer-badge.no{background-color:#28a745;color:#fff}.severity{background-color:#ffc107;border-radius:12px;color:#212529;font-size:12px;font-weight:600;padding:4px 8px}.other-description{background-color:#fff;border:1px solid #dee2e6;border-radius:4px;color:#495057;font-size:14px;margin-top:8px;padding:8px;width:100%}.other-description strong{font-weight:600;margin-right:8px}.survey-brief{color:#6c757d;font-size:14px;font-style:italic;margin:8px 0}.selected-date-info{align-items:start;display:flex;flex-direction:column;gap:5px;margin-bottom:5px;max-width:800px}.selected-date-row{align-items:center;display:flex;font-size:17px;padding:12px 0}.selected-date-label{color:#1565c0;font-weight:600}.selected-date-value{background:#e3eafc;border-radius:6px;color:#333;font-size:16px;font-weight:500;margin-left:8px;padding:3px 12px;transition:background .2s}.selected-date-value.rating-value{background:#fff3cd;border:1px solid #ffeeba;color:#856404}.selected-date-value.rating-value.empty{background:#f8d7da;border:1px solid #f5c6cb;color:#721c24}.alert-indicator{align-items:center;display:flex;gap:12px;justify-content:center;margin-top:30px}.light{border-radius:50%;box-shadow:0 0 10px #0003;height:16px;width:16px}.alert-message{color:#444;font-size:16px}.ef-toolbar{flex-wrap:wrap;gap:20px;justify-content:center;margin-bottom:20px}.ef-toolbar,.ef-toolbar-label{align-items:center;display:flex}.ef-toolbar-label{color:#343a40;font-size:15px;gap:8px}.ef-date-input,.ef-select{background-color:#fff;border:1px solid #d0d5dd;border-radius:6px;color:#333;font-size:14px;padding:6px 10px}.ef-toolbar-range{color:#6c757d;font-size:13px}.ef-toolbar-tab{justify-content:flex-start;margin-bottom:0}.ef-tabs{border-bottom:2px solid #e9ecef;display:flex;gap:24px;justify-content:center;margin-bottom:24px}.ef-tab-btn{background:none;border:none;color:#6c757d;cursor:pointer;font-size:15px;font-weight:600;padding:10px 4px;position:relative;transition:color .2s ease}.ef-tab-btn:after{background:#0000;border-radius:2px 2px 0 0;bottom:-2px;content:"";height:2px;left:0;position:absolute;right:0}.ef-tab-btn:hover{color:#343a40}.ef-tab-btn.active{color:#4f77ff}.ef-tab-btn.active:after{background:#4f77ff}.ef-panel{display:flex;flex-direction:column;gap:24px}.ef-panel-split{align-items:flex-start;flex-direction:row;gap:20px}.ef-card{background-color:#fff;border-radius:12px;box-shadow:0 4px 12px #00000014;padding:22px 24px}.ef-card-title{color:#343a40;font-size:17px;margin:0 0 4px}.ef-card-sub{color:#6c757d;font-size:13px;margin:0 0 18px}.ef-funnel-row{grid-gap:14px;align-items:center;display:grid;gap:14px;grid-template-columns:100px 1fr;padding:8px 0}.ef-funnel-label{color:#343a40;font-size:14px;font-weight:600}.ef-funnel-track{background-color:#eef1f8;border-radius:8px;height:30px;overflow:hidden;position:relative}.ef-funnel-fill{align-items:center;background:linear-gradient(90deg,#4f77ff,#3b3d61);border-radius:8px;color:#fff;display:flex;font-size:12px;font-weight:600;height:100%;min-width:36px;padding:0 10px;transition:width .3s ease}.ef-adherence-scroll{max-height:320px;overflow:auto}.ef-adherence-table{border-collapse:collapse;width:100%}.ef-adherence-table th{background-color:#f8f9fa;border-bottom:1px solid #e9ecef;color:#6c757d;font-size:12px;font-weight:600;padding:6px 8px;position:sticky;text-align:center;top:0}.ef-adherence-user{color:#343a40;font-weight:600;padding:6px 10px;white-space:nowrap}.ef-adherence-table td{padding:4px 6px;text-align:center}.ef-cell{background-color:#eef1f8;border-radius:4px;display:inline-block;height:18px;width:18px}.ef-cell-done{background-color:#28a745}.ef-cell-flag{background-color:#e0a800}.ef-cell-miss{background-color:#f6dede;border:1px solid #c90000}.ef-legend{color:#6c757d;display:flex;flex-wrap:wrap;font-size:12px;gap:18px;margin-top:14px}.ef-legend span{align-items:center;display:flex;gap:6px}.ef-sidebar{display:flex;flex:none;flex-direction:column;gap:10px;width:220px}.ef-search{border:1px solid #d0d5dd;border-radius:6px;font-size:14px;padding:8px 10px}.ef-sidebar-list{background-color:#fff;border-radius:10px;box-shadow:0 4px 12px #00000014;display:flex;flex-direction:column;gap:2px;max-height:480px;overflow-y:auto;padding:6px}.ef-sidebar-row{background:none;border:none;border-radius:6px;color:#343a40;cursor:pointer;font-size:14px;padding:9px 10px;text-align:left}.ef-sidebar-row:hover{background-color:#f5faff}.ef-sidebar-row.active{background-color:#4f77ff;color:#fff}.ef-main{flex:1 1;min-width:0}.ef-detail-head{align-items:center;display:flex;justify-content:space-between;margin-bottom:18px}.ef-tab-heading{color:#343a40;font-size:20px;font-weight:700}.ef-event-list{display:flex;flex-direction:column}.ef-event-item{grid-gap:14px;display:grid;gap:14px;grid-template-columns:150px 1fr}.ef-event-rail{border-left:2px solid #e9ecef;padding:0 0 16px 16px;position:relative}.ef-event-item:last-child .ef-event-rail{border-left-color:#0000;padding-bottom:0}.ef-event-rail:before{background-color:#6c757d;border:2px solid #fff;border-radius:50%;content:"";height:10px;left:-6px;position:absolute;top:2px;width:10px}.ef-event-app_foreground:before,.ef-event-playback_started:before{background-color:#28a745}.ef-event-playback_paused:before{background-color:#e0a800}.ef-event-playback_completed:before{background-color:#4f77ff}.ef-event-app_background:before{background-color:#adb5bd}.ef-event-rating_submitted:before{background-color:#1db954}.ef-event-adverse_survey_submitted:before{background-color:#c90000}.ef-event-sync_result:before{background-color:#6c757d}.ef-event-time{color:#6c757d;font-size:12px;padding-top:1px;white-space:nowrap}.ef-event-title{color:#343a40;font-size:14px;font-weight:600}.ef-event-meta{color:#6c757d;font-size:12px;margin-top:2px}.ef-song-rows{display:flex;flex-direction:column;gap:12px}.ef-song-row{grid-gap:14px;align-items:center;display:grid;gap:14px;grid-template-columns:90px 1fr 200px}.ef-song-user{color:#343a40;font-size:14px;font-weight:600}.ef-progress-track{background-color:#e3ebe6;border-radius:6px;height:20px;position:relative}.ef-progress-fill{background-color:#1f7a5c;border-radius:6px;inset:0;position:absolute}.ef-progress-fill.incomplete{background:repeating-linear-gradient(135deg,#b5504a,#b5504a 5px,#f6dede 0,#f6dede 10px);opacity:.85}.ef-progress-pin{background-color:#b98f3e;border:2px solid #fff;border-radius:50%;cursor:default;height:10px;position:absolute;top:50%;transform:translate(-50%,-50%);width:10px}.ef-progress-pin.long{background-color:#c0632a;height:14px;width:14px}.ef-progress-pin:after{background-color:#343a40;border-radius:6px;bottom:150%;color:#fff;content:attr(data-tip);font-size:11px;left:50%;opacity:0;padding:5px 9px;pointer-events:none;position:absolute;transform:translateX(-50%) translateY(4px);transition:opacity .12s ease,transform .12s ease;white-space:nowrap;z-index:5}.ef-progress-pin:focus-visible:after,.ef-progress-pin:hover:after{opacity:1;transform:translateX(-50%) translateY(0)}.ef-song-stat{color:#6c757d;font-size:12px;text-align:right;white-space:nowrap}.ef-subject-progress{border-bottom:1px solid #e9ecef;margin-bottom:22px;padding-bottom:20px}.ef-subject-progress-head{align-items:baseline;display:flex;gap:12px;justify-content:space-between;margin-bottom:8px}.ef-subject-progress-song{color:#343a40;font-size:14px;font-weight:600}@media (max-width:720px){.ef-panel-split{flex-direction:column}.ef-sidebar{width:100%}.ef-event-item{grid-template-columns:100px 1fr}.ef-song-row{grid-template-columns:70px 1fr}.ef-song-stat{grid-column:1/-1;text-align:left}}
/*# sourceMappingURL=main.4a58ea22.css.map*/